运算符tips

c语言运算符tips

赋值运算符:

			int a,b;
			a+b = 10;
			=赋值运算符左边(左操作数)必须是左值
			左值: 能放在=左边的称为左值   可以发生改变的量  称为左值
			10 数值不可变
			3.14 数值不可变
			'a'  数值不可变
			a+b  结果为一个数值,该数值不可变

算数运算符:

			long long x = 365*24*60*60*1000*1000LL;
			long long y = 365LL*24*60*60*1000*1000;
			由于不同类型进行混合运算时: 窄字节数据自动扩充成宽字节数据进行运算
			所以int与int运算为int,故x中365*24*60*60*1000已经越界。
			long long与int运算结果为long long
			char-->int-->long-->float-->double
			short-->int
			unsigned char --> unsigend int
			char在进行算术运算过程中,会自动转换成int
			signed和unsigned进行运算 会转换为 unsigned进行运算

自增减运算符:

		++i;--i;//前加加 前减减   先进行加加减减,取自增减之后的结果进行运算
		i++;i--;//后加加 后减减   先进行表达式运算,最后才进行自增减运算
		int c = a+++++b;//错误
		int c = a++ + ++b;  ++--运算符和其它运算符之间必须要有空格
		
		在运行一个表达式时: 首先浏览表达式,记录所有的的后加加减减,
		然后计算所有的前加加减减,并且写回到变量所代表的内存中,
		再然后取变量的结果进行表达式的运算和赋值,
		最后进行最先记录的后加加减减

for example

#include <stdio.h>

int main()
{
	a = 10;
	x = a++ + ++a;
	printf("x = %d\n",x);//得到结果为22,那是11+11呢还是10+12
	//来验证一下
	a = 10;
	a = a++ + ++a;
	printf("a = %d\n",a);  //结果为a = 23,最后自增1,故为11+11  
	return 0;
}

关系运算符:

int res = 0<a<2;   //恒为1   不管a的取值为多少 res结果都为1
0<a<2 需要分步计算  0<a 结果要么是0,要么是1  0 or 1<2
所以0<a<2用a>0 && a<2来表示。
#include <stdio.h>

int main()
{
	int a = -20;
	unsigned int b = 10;
	int res = a+b>0;
	printf("%d\n",res);
	return 0;
}
的结果是是真是假呢?
结果为1
signed+unsigned 结果是 unsigned  

sizeof:

		char c = 'a';
		char *p = &c;
		int arr[10] = {};
		printf("%u\n",sizeof(c));//1  char   1byte
		printf("%u\n",sizeof('a'));//4  'a'本质是int    4byte
		printf("%u\n",sizeof(c+c));//4  字符类型数据在进行运算时自动转换成int  4byte
		printf("%u\n",sizeof(p));//指针一般字节数为4,不同系统不一样
		printf("%u\n",sizeof(arr));//字节数等于数组长度为10
		然后函数参数在中的数组退化为指针
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HOVL_C++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值