- Pontscho blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Itt mit kellene nezni? signed int [−32767,+32767]
A debugger miert mutat unsigned erteket?
- A hozzászóláshoz be kell jelentkezni
A signed int az bizony [–2,147,483,648, 2,147,483,647] es nem [−32767,+32767] (ami valojaban -32768). Szimplan, mivel negativ a szam es ezert kettes komplementer a tarolas modja, az also 16 bitet vagja az arcodba, elojel nelkul.
Igy:
Gillian ~/$ cat | clang35 -o main && ./main
#include <stdio.h>
int main(void)
{
int i = -1;
printf(" ! %d %u %u\n", i, i, i & 0xffff);
return 0;
}
! -1 4294967295 65535
Gillian ~/$
---
pontscho / fresh!mindworkz
- A hozzászóláshoz be kell jelentkezni
Az nem a signed long?
%u: decimal unsigned int
%d: signed decimal number. - tehat akkor itt a hiba :)
- A hozzászóláshoz be kell jelentkezni
Az nem a signed long?
Nem.
%u: decimal unsigned int
%d: signed decimal number. - tehat akkor itt a hiba :)
Szandekosan hasznaltam azt amit, szemleltetni, h mi is a problema.
---
pontscho / fresh!mindworkz
- A hozzászóláshoz be kell jelentkezni
az int mérete az tipikusan implementáció és architektúra függő, nem explicit 64 bit ahogy írtad
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Sehol sem emlitettem, h 64 bit lenne. :)
Amugy meg:
Gillian ~/Code/build/Darwin$ clang35 -o main main.c && ./main
main.c:1:18: warning: implicitly declaring library function 'printf' with type 'int (const char *, ...)'
int main(void) { printf("%zu\n", sizeof(int)); return 0; }
^
main.c:1:18: note: include the header <stdio.h> or explicitly provide a declaration for 'printf'
1 warning generated.
4
Gillian ~/Code/build/Darwin$ file main
main: Mach-O 64-bit executable x86_64
Gillian ~/Code/build/Darwin$
---
pontscho / fresh!mindworkz
- A hozzászóláshoz be kell jelentkezni