‘壹’ 关于C语言在不同编译软件中运行后得到的不同结果的问题。
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的这一功能属性。
‘贰’ 在C语言中,int类型,long类型,float类型,double类型和char类型在16位和32位计算机中各占几个字节
int 在内存中占4个字节,long在内存中占4个字节,float:占4个字节,double: 占8个字节,char:占1个字节,操作方法如下:
1、C#支持8中预定的整数类型。分别是sbyte、short、int、long、byte、ushort、uint、ulong。byte0-255标准的8位整数类型。默认是无符号的,有符号的为sbyte。
‘叁’ c语言整型数据int占几个字节
不同的编译器,占据的字节也不同,具体如下表所示:
编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的,而当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节。
(3)c语言16位与32位编译器扩展阅读:
在使用不同编译器时候需要注意他们的数据类型差异,int如此其他数据类型也应当注意,因为并没用人规定某种数据类型应该占据多少字节,以及他所表示的数据是有符号还是无符号,即便有人规定这些内容那么编译器是否愿意按规定来实现谁也说不准。
‘肆’ 32位系统和16位系统中C语言的int的占多少位
正常情况下,16位int就是16位的,2字节32位环境下int是32位的,4字节,不过还与编译器有关,比如,我们用WinXp32位版下,运行Tc2.0,那么int是16位,但你如果用VC编译,那么int是32位,注意,int是多少位,与编译器有关系,不同的编译器可能就不同
‘伍’ c语言,为什么int类型在16位系统中占2个字节,在32位系统中占4个字节
常用的字节是8位的字节,即包含8位的二进制数,因此4个字节就是32位。如下参考:
字节是二进制数据的单位。一个字节通常是8位长。然而,一些较老的计算机结构模型使用不同的长度。为了避免混淆,在大多数国际文献中都使用字字节而不是字字节。
在大多数计算机系统中,字节是8位长数据的单位,大多数计算机使用字节来表示字符、数字或其他字符。
数据存储是以“字节”为单位,数据传输大多以“位”(bit,也称“位”)为单位,位表示0或1(即二进制),每8位(bit,缩写为b)构成一个字节(缩写为b),是最小级别的信息单位。
(5)c语言16位与32位编译器扩展阅读:
有关计算机的单位的作用:
在计算机中,作为一个整体处理或操作的一串数字被称为计算机字,或简称,一个字通常被分成几个字节(每个字节通常是8位)在内存中,每个单元通常存储一个单词,因此每个单词都是可寻址的。一个字的长度是以位来表示的。
在计算机的运算单元中,控制器通常以字单元进行传输。单词出现在不同的地址,具有不同的含义。例如,发送给控制器的字是一条指令,而发送给算术单元的字是一个数字。
2.单词长度:
计算机的每个字中包含的位数称为字长。计算的字长是一次可以处理的二进制数字的数目。当然,计算机处理数据的速度与它一次能处理的比特数和处理数据的速度有关。
例如如果一台计算机的字长是另一台计算机的两倍,那么即使两台计算机的速度相同,前者也可以在同一时间完成两倍的工作。
‘陆’ 在C语言中,int类型、long类型、float类型、double类型和char类型数据,在16位和32位计算机中各占几个字节
基本整形:int 2个字节
短整型:short int 2个字节
长整形:long int 4个字节
无符号整形:unsigned int 2个字节
无符号短整型: unsigned short int 2个字节
无符号长整形:unsigned long int 4个字节
单精度 float 4个字节 有效数字7位
双精度 double 8个字节 有效数字16位
字符型 char 1个字节
以上是在16位计算机系统中,32位的加倍。
如果实在不相信,可以用sizeof函数验证一下,方法如下
#include“stdio.h”
main()
{
int m;
m=sizeof(数据类型);
printf(“%d",m);
}
‘柒’ c语言数据长度16位和32位什么意思
楼上不要胡说!
>>是说16位的机器就是2个,32位是4个吗?
这句话说的不太对,
这个其实指的是编译器的位数,
对于16位编译器(例如,tc),int型占2个字节
对于32位编译器(例如,vc,gcc),int型占4个字节
这里指的是编译器的位数,不是cpu的位数
‘捌’ 假定编译器规定int和short类型长度分别为32位和16位,执行下列C语言语句:
B.0000FFF8H
为正确答案
‘玖’ C语言同一段代码,同样的文件,编译器为什么运行结果不一样
有如下几种可能:
1 代码运行的平台硬件不同。
不同的CPU,如嵌入式CPU,intel CPU,以及IBM的CPU,在硬件最底层就是不同的,而C语言是一门和底层相关性极大的语言,在不同的硬件上运行出不同结果是很正常的。
2 代码运行的系统不同。
相同CPU在不同操作系统上跑相同代码时,一样会出现不同的结果。这是由于系统底层的实现不同造成的。比如linux和Windows,在底层处理上就有一定的差异。
3 编译器不同,同时代码中使用了C规范未定义规则的语句。
C语言规范并没有对C语言的所有行为做定义,所以相同语句,不同编译器的运行效果可能有所不同。比如同样的sizeof(int),在16位编译器上结果为2,而32位编译器上就会是4。
4 代码获取到的外部数据不同。
比如运行代码时获取到的其它输入不同,包括程序中获取的环境变量,实时信息,以及各种外部输入等,均有可能出现不同。
比如在做随机数时,如果以当前时间设定随机数种子,由于每次的时间是不同的,同一个程序每次运行的结果都是不同的。
‘拾’ 每个编译器都不一样么 c语言一般用什么编译器 每次一种编译器不能编译 另一种却能编译出
编译器就是c语言编译成二进制的东西,
不同的编译器是不同的,
比如16位系统和32位系统的编译器就不同,因为16位的认为int是2字节,32位的则认为是4个字节。
另外
linux上的编译器跟windows下的编译器也不同,linux上的认为内核空间占1G,而windows下则认为占2G,
此外两个系统对环境变量以及其他的设置也不同所以编译器更不能用。
而且不同的CPU的指令集时不同的,所以同样int
a
=1
最后被编译成的二进制代码也是不同的。
C语言的编译器有很多,windows下的编译器也有很多,不同的编译器可能会做一些不同的优化,linux下的gcc也可以添加选项让他编译windows下运行的程序。
main(int
argc,char*argv[
】
)
argc
是你的参数个数
argv是你的参数。
比如你最终程序叫
add
那么
你在命令行执行add
1
2
那么argc
=3
第一个参数使你的add,
第二个第三个就是
1
2,
在函数内部你就可以获取这俩参数进行相加然后打印
visual
是个IDE,集成开发环境,已经集成好了windows下使用的编译器连接器
等,
编写代码完成后直接点击编译就行了。
IDE的默认编译器是可以更改的,不同的IDE设置不同。