想深入了解C的,入来一起研究下.
我是想问问,short(16位),long(32位),long long(64位),int(16位,32位,64位)...我主要想问int是根据什么而定多少位的?
自己的实践:在32位系统用VC++编译器和Dev cpp编译器测试,和64位系统用VC++编译器和Dev cpp编译器测试,只得出一个答案:int的位数是根据编译器而定的. 是吗?我一直都没有搞懂.希望大家能帮下我.如下图:
64位系统用Dev cpp编译器测试:
32位系统用Dev cpp编译器测试:
32位和64位系统用VC++编译器(不支持long long 类型)同一个结果:
既然你知道是由编译器决定而非系统决定,那就很好理解了啊,dev-cpp用的明显是32位的mingw,在64位Windows中是兼容32位的,正如32位Windows兼容16位子系统;
VC6更不用说了,根本没有64位编译器,而且VC6的long long应该用_int64
你试试VS2005、VS2008的x64编译器,结果就不一样了
http://topic.csdn.net/u/20090626/17/dbca5fb5-22c2-4d6b-ae89-08d938679077.html
和编译器和系统都有关系
和机器的关系仅限于——你的机器支不支持这种编译器,具体的数据完全由编译器决定
你不要从编译器的角度去看待int的大小,编译器给出的只是一个实现。
C/C++标准并没有明确规定int应该有多大,只规定了int应该至少跟short一样长,至于具体如何实现,各编译器可以根据自己的环境去决定,这就给了编译器很大的自由度进行优化。但一般来说,编译器的设计更倾向于让int等于当前执行环境中与cpu模式使用的数据大小相等的长度。
The rank of long long int shall be greater than the rank of long int, wh
相关问答:
在查询后将查询出来的值赋给各输入框
<c:if test="${not empty dataValue}">
fm.SAMPLING_DATE.value=" <c:out value='${dataValue.SAMPLING_DATE}'/ ......
编写程序detab, 将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。
------------------- ......
6月5日消息,XX网站日前评出了10项大势已去的计算机技术。其中,有些技术已经被淘汰,有些即将被淘汰。如著名的Cobol语言,以及IBM的OS/2系统。
以下为XX网站评出的被淘汰的10项计算机技术:
......
'\108'作为字符常量对不对?
转义字符'\ddd'表示3位8进制所代表的字符。 但是108不是正确的8进制表示方法,因此应该是错误的。
但是char a='\108'; 为什么编译不出错呢?
\108 没超过 ......