Portál AbcLinuxu, 7. května 2025 21:37
Ahoj, shanim nejake kousky kodu k reseni uloh viz priklad nize. Mam to pro procvicovani studenta ale doma jich mam zatracene malo (jeste pozustatky z FELu) a na netu jsem nic podobneho nenasel. Nemate neco vy, nebo alespon odkazy? Diky...
Priklad:
Do nasledujiciho kodu doplnte chybejici konstantu v podmince tak, aby procedura xyz() byla volana prave 2100krat...
for (i = 0; i < 70; i++) {
j = 0;
do {
if (j > ___) xyz();
j++;
} while (j < 90);
}
Pascal ???
Nebo neco takoveho:)
Je dán následující program
program AAA
var A, B, C: integer
begin
read(A, B);
while A > B do
A := A – 2;
while B > A do
B := B – 2;
C := A + B;
writeln(C)
end.
Určete, jak závisí výsledná hodnota proměnné C (tzn. výstup programu) na vstupních
hodnotách proměnných A, B.
int oops() { char ch = 0x80; switch (ch) { case 0x80: return 3; case 0x40: return 2; default: return 1; } }Jaky je vysledek oops() ?
ne, vzdycky to vrati jedna, protoze 0x80 je 128, kdezto char ma max hodnotu 127, takze to pretece :)
ano, zalezi, zda bude brat 0x80 jako znak, nebo jako konstantu, pokud to bude pretypovavat, tak by to melo mit stejnou hodnotu, jinak by to melo padnout do defaultu
If necessary, an integral promotion is performed on the controlling expression, and all expressions in the case statements are converted to the same type as the controlling expressionneplatí, nebo je nějaký způsob, jak to interpretovat nejednoznačně? Tedy jinak, než: 1. ch je menší než int, takže se převede na int 2. největší společný typ ch (nyní int) a konstatních výrazů v case je int 3. všechny konstatní výrazy v case se převedou na int 4. porovná se Konstanty ve switchi podle mne přetéci nemohou, protože se jich žádný char netýká. U inicializace ch ale skutečně záleží na tom, jak se 0x80 převede do char.
integral promotion is performed on the controlling expressiontedy, je-li menší než int, tak se nejdříve povýší na int.
ne, obycejny char v c nemuze mit 128b
CHAR_BIT = 16 sizeof(char) = 1 // * CHAR_BIT = 16b sizeof(uint16_t) = 1 // * CHAR_BIT = 16b sizeof(uint32_t) = 2 // * CHAR_BIT = 32bNa takové platformě samozřejmě nebude definován typ uint8_t, protože architektura prostě nemá typ menší než 16b.
typedef char library_assert_sizeof_char[sizeof(char) == 1 ? 1 : -1]; //have to be 1 typedef unsigned char library_assert_sizeof_unsigned_char[sizeof(unsigned char) == 1 ? 1 : -1]; //have to be 1 typedef char library_assert_sizeof_char_bits[ CHAR_BIT == 8 ? 1 : -1]; //sorry, this library needs it
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.