-3 c type-conversion
这是我不理解的 C 程序的一部分:
unsigned short twittlen;
int x;
x = atoi(argv[1]);
twittlen = x;
if(twittlen >= 64) {
printf("Nope , You don't know about Integer");
return -1;
}
if (x >= 64 )
printf("you got it ");
Run Code Online (Sandbox Code Playgroud)
我的问题是如何找到一个大于 64 的 int 但将其转换为 unsigned short 时它将小于 64 !即使在stackoverflow上,我也看了很多关于这些类型整数的限制,但我没有找到答案!提前致谢 :)
当你分配int一个值unsigned short,截断会发生。
假设int是 4 字节,short是 2,你只需要给程序提供一个大于 64 的值,其低两个字节小于 64。
最大的无符号 16 位值为 65535:
0x0000FFFF
Run Code Online (Sandbox Code Playgroud)
因此,如果您输入数字 65536:
0x00010000
Run Code Online (Sandbox Code Playgroud)
当截断为两个字节时:
0x0000
Run Code Online (Sandbox Code Playgroud)
是零。