int i=65536;printf("%d\n,i);它的输出结果是什么
发布网友
发布时间:2023-09-27 00:48
我来回答
共3个回答
热心网友
时间:2024-04-10 04:18
lz是想实验
short
i=65536;printf("%d\n,i);吧
是的话输出结果是0
我看了下反汇编的结果,给你解释下为什么是0吧
65536对应的16进制数十10000h,
short
i=65536经过汇编之后的结果是
mov
[i],10000h
i只占16位对应10000h的低16位,最高位的1由于存不下了就自动舍弃掉了,所以i的值为0
不知道其他编译器是不是也是这么处理的,我估计应该差不多,
忘说了,我的IDE是VS2010
热心网友
时间:2024-04-10 04:19
这个要看编译器中对于int的占用的字节数是多少,如果int是16位,占用2字节,则输出-1;如果int是32位,占用4字节,则输出65536
热心网友
时间:2024-04-10 04:19
第二句写错了:printf("%d\n,i);
我想你是想写成:
printf("%d\n",i);
输出结果因平台而异,一般int代表4字节。你可以用sizeof(int)先测试下宽度,然后自己想他会输出什么