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

本文详细解析了不同数据类型在16位操作系统中的字节占用情况,包括整型、实型和字符数据的特点,以及数据类型转换规则。通过具体实例展示了整型数据溢出、实型数据舍入误差的现象,并介绍了数值型数据类型转换、运算符使用和逗号运算符的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型

基本类型

整型在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值