|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1、用的谭浩强的C教材,第三章讲到整型数据时候有个例子(例3.3):
- main()
- {
- int a,b;
- a=32767;
- b=a+1;
- printf("%d,%d\n",a,b);
- }
复制代码 int整型表示的数字范围是-32768~32767.(16位),按正常的理解,这段程序中b=a+1后,数学结果应为32768,可32768超出了int型有符号数能表示的数字范围。那么,对于计算机来说,正确的结果应该为b=-32768。书中的说明也的确如此。事实上,在计算机内存中对正确的数学结果32768和正确的计算机逻辑结果-32768的存储形式都是一致的:1000 0000 0000 0000.
可我用VC++6对该段程序编译运行后的结果却是32767,32768.
这个是什么原因呢?定义的b是有符号型的int,运行结果中的b不就应该是-32768么?
2、例3.5
- main()
- {printf("%f\n",356.);
- printf("%f\n",356);
- printf("%f\n",356f);
- }
复制代码 在VC6中编译出现错误,提示:
warning C4013: 'printf' undefined; assuming extern returning int
error C2059: syntax error : 'bad suffix on number'
error C2146: syntax error : missing ')' before identifier 'f'
error C2059: syntax error : ')'
如果把最后一句去掉,编译没有问题,但运行结果是356.000000和0.000000.这又是怎么回事呢?
麻烦大家帮忙解答一下,谢谢了。
|
|