C语言学习易错点总结(一)---数据类型及运算符

数据类型

基本类型

整型在16位的操作系统中,int占2个字节,short与int相同,long占4个字节。

//整形数据的溢出
int a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);//a=32767,b=-32768

实型(浮点型) 在16位的操作系统中,float占4个字节,有效数字6-7位,double占8个字节,有效数字15-16位,long double占16个字节,有效数字18-19位。

//实型数据的舍入误差
float a,b;
a=123456.789e5;
b=a+20;
printf("%f\n",a);//12345678848.000000
printf("%f\n",b);//12345678848.000000

由于a是float,有效位数只有七位,而整数已占五位,故小数二位后之后均为无效数字。
字符数据也可以看做整型量,但是整形量为二字节,字符量为单字节,当整型量按字符量处理时,只有低八位字节参与处理。大小写字母的ASCII码相差32。
字符串常量 字符串常量占的内存字节数等于字符串中字节数加1。
在定义中不允许连续赋值 int a=b=c=5;

数值型数据类型转换

所有的浮点运算都以双精度进行,即使仅含float单精度,也要先转换成double型。char型和short型参与运算时,必须先转换成int型。在赋值运算中,赋值号右边量的类型将转换为左边量的类型,如果右边比左边长,将丢失一部分数据,丢失的部分将四舍五入。

无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

运算符

求余运算符(模运算符)“%”,要求参与运算的量均为整型。

int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);//3个i相加,但最后i等于8,p=15
q=(++j)+(++j)+(++j);//j先自增3次,j=8,q=24

但是codeblocks的实际运算结果为p=18,q=22

//把5赋予a,8赋予b,再把a,b相加,和赋予x,故x应等于13
x=(a=5)+(b=8);
x*=y+7;//x=x*(y+7)

单目运算符优先级较高,算术运算符优先级较高,单目运算符,三目运算符,赋值运算符具有右结合性。

逗号运算符和逗号表达式

表达形式为:表达式1,表达式2
分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值

int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);//x=6,y=10

你可能感兴趣的:(学习点滴)