永发信息网

关于C语言在不同编译软件中运行后得到的不同结果的问题。

答案:2  悬赏:80  手机版
解决时间 2021-04-01 14:31
  • 提问者网友:山高云阔
  • 2021-03-31 17:47
关于C语言在不同编译软件中运行后得到的不同结果的问题。
最佳答案
  • 五星知识达人网友:时间的尘埃
  • 2021-03-31 18:48
tourbo中int 占2个字节 c++中占4个字节 -1是以2进制补码的形式表示滴。
tourbo中-1的16进制形式表示:0xFFFFFFFF
c++中-1的16进制形式表示为:0xFFFFFFFFFFFFFFFF
所以翻译成8进制时也各不相同啊。
可以使用头文件inttypes.h 这是c99提供的一个可选名字集合(来完成可移植性)
使用该头文件你可以定义uint32_t a; 那么a变量表示一个32位无符号的整数类型。
这就保证了程序的可移植性,关键是现在很多编译器还没有实现c99的这一功能属性。
全部回答
  • 1楼网友:摆渡翁
  • 2021-03-31 19:57
长整型,整型 的数据范围,就是根据不同的编译器,或者说编译器模式决定的。
16位编译器(如Toubo C),int取值2^15-1~2^15,-1在强制无符号后是最大值。
32位编译器,如VC,在正常配置下,int是32位,最大值是2~31-1
移植问题,大型程序从16位到32位,几乎都需要重写,因为涉及可能的漏洞太多了。简单代码,只要注意int类型使用就没什么问题,解决也很简单,long类型的定义,16位和32位是相同的,都是4字节,short的定义也相同,都是2字节。避免使用int和int的强制转换,基本就可以通用了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯