C语言复习笔记

发布 2021-05-12 01:20:28 阅读 6622

1. c标准没有具体规定short,int,long所占内存字节数,只要求long型数据长度》=int型数据长度》=short型数据长度。具体实现由计算机系统自行决定。

如微机上,int和short都是16位,long为32位;vax750上,short是16位,int和long都是32位。

注意:以下是典型的数据位长和范围。但是编译器可能使用不同的数据位长和范围。这取决于使用的编译器。请参考具体的参考手册。

在头文件<>和<>中说明了基础数据的长度。float,double和long double的范围就是在ieee 754标准中提及的典型数据。

补充资料:一个int占多少个字节?

这个问题我们往往得到的答案是4。但是int到底占多少个字节,却跟你的机器环境有关。

as you can see, the typical data type sizes match the ilp32ll model, which is what most compilers adhere to on 32-bit platforms. the lp64 model is the de facto standard for compilers that generate code for 64-bit platforms.

最近在一本有关**审计的书上看到如上解释。这里很好的解释了int到底应该占多少个字节。而且从他的角度来看是编译器去适应平台。

所以真正决定int占多少字节取决于你的device platforms。其实无论哪种模型short和char都保持一致。我们见得最多的就是ilp32ll模型。

这种模型下int和long以及pointer占4个字节,long long占8个字节。

ps:这个表很容易记,中间的数字表明你是64bit还是32bit的机器。前面的i表示int,l表示long,ll表示long long,p就表示pointer。

位于数字前面的类型表示跟中间的bit数保持一致。举个例子:ilp32ll 就是ilp是32位,ll是64位。

跟编译器有关。16位的c编译器int型占2字节;32位和64位的编译器通常是4字节。使用前最好使用sizeof(int) 看看当前编译器是如何定义的。

我们在嵌入式系统中便于移植,一般如下定义:

2. 将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中,而是将该字符的相应ascii码放到存储单元中。字符串常量是用””括起来的字符序列,系统会自动在字符串后面加一个串结束符’\0’(ascii码为0)。

3. 类型转换:不同类型的整型数据间的赋值归根到底一条,按存储单元中的存储形式直接传送。

a) 将实型数据(包括单、双精度)赋给整型变量将舍弃实数的小数部分。

b) 将整型数据赋值给实型,数值不变,但以浮点数形式存储。

c) 将一个double型数据赋值给float变量时,截取其前面7位有效数字存放到float变量的存储单元中。但注意数值范围不能溢出。将一个float类型赋值给double变量时,数值不变,有效位扩展到16位,内存中以64bit存储。

d) 将字符型数据赋值给整型变量时,由于字符型只占一个字节,整型占两个字节,因此将字符数据放到整型变量的低八位中。有两种情况:

系统将字符处理为无符号的量或对unsigned char型变量赋值,则将字符的8位放到整型变量低8位,高8位补零。

如果所用系统将字符处理为有符号量(signed char),若字符最高位为0,则整型变量高8位全补零;若字符最高位为1,则高8位全补1,称为“符号扩展”,可以保证数值不变。

e) 将一个short、int、long型数据赋值给char型变量时,只将其低8位原封不动地传送到char型变量中(截断)。

f) 将带符号的整型数据(int)赋给long型变量时,要进行符号扩展。反之将long型数据赋值给int型变量,只要将低16位原封不动地传送到整型变量。

g) 将unsigned int数据赋给long int型变量时,不存在符号扩展问题,只要将高位补0即可。将一个unsigned类型赋值给一个占字节数相同的整型变量(unsigned int=>int; unsigned long=>long; unsigned short=>short),将unsigned变量的内容原样传送到非unsigned型变量中,但如果数值范围超过相应整型的范围,将会出现数据错误。

h) 将非unsigned型数据赋值给长度相同的unsigned型变量,也是原样传送(连原有的符号位也作为数值一起传送)。

表达式1,表达式2,表达式3,….表达式n;

求解过程是:从表达式1一直求到表达式n,整个逗号表达式的值是最后一个表达式的值。

#include <>

int main(int argc, char *ar**)

char x

int len1 = strlen(c);

int len2 = strlen(s);

int len3 = strlen(x);

printf("len1=%d,len2=%d,len3=%d", len1, len2, len3);

C语言笔记

第一课时。c语言标准格式。include vidomain 以 开头的语句称为预处理指令。include语句不是必须的,但是如果一旦有该语句就必须把它放在文件开始处是standared input output header的缩写standared 标准input 输入output 输出header...

C语言笔记

c语言算法和数据类型。整型。基本类型 字符型注释 基本类型的特点是其不可实型 单精度型以再分解为其他类型双精度型数组型。数据结构 构造型 结构体型共用体型指针型空类型。一 常量。define 语句不以分号结尾,它可以放在源 的任何位置。不过在定义常量时,只有在它定义后的源 中才有效。是一个修饰符,在...

c语言笔记

1.if中别忘了 而不是 2.写完程序别忘了检查前后大括号 小括号是否完全照应。3.遇到几分之几的分数可以方程两边同时乘以一个数来消去分母。4.写指针题时看准指针对应的是行还是列。例 int a 4 3 int p a 0 列指针。int ptr 3 a 行指针。5.考虑好哪些量会随着循环不断改变。...