C语言运算符与表达式-创新互联
目录
10余年的两当网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整两当建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“两当网站设计”,“两当网站推广”以来,每个客户项目都认真落实执行。运算符与表达式
运算符
左值与右值
优先级
结合性(读法)
基本运算符
赋值运算符(=)
算术运算符(+ - * / %)
位运算符(>><<)
复合赋值运算符
条件与逻辑运算符
条件运算符
逻辑运算符
特殊运算符
逗号运算符
sizeof运算符
三目运算符
++与--运算符
有毒代码
输入的奇葩代码
内存共享问题
基础数据类型作业
填空
运算符 左值与右值
左值:一般是变量
右值:可以为常量或变量
int iNum; iNum = 0;
算法(怎么去算)
基本运算符 赋值运算符(=)iNum=1; //把1赋值给iNum
赋值运算符最终的值是变量的值
算术运算符(+ - * / %)int iNum=0; iNum=123;
(/) 除法取整
float fNum=4/3; printf("%f\n",fNum);
(%)取余,余数正负只与被取余数有关
printf("%d\n", 2 % 3); printf("%d\n", -2 % 3); printf("%d\n", -4 % 3);
都是以二进制形式操作
(>>)右移:右移n位 (正数左边加n个零)( 负数加n个一)
int iNum=0x00ffeedd; printf("%x\n",iNum>>8); //0x0000ffee
(<<)左移: 左移n位 (右边加n个0)
printf("%x\n",iNum<<8) //0xffeedd00
位与(&)
printf("%d\n",2&3);
位或(|)
printf("%d\n",2|3);
按位取反(~)[0变1 1变0]
printf("%d\n",~1);
+= -= /= *= &= |=
默认把复合赋值运算符右边部分当作一个整体
int num=0; num*=1+2+3+4*5; //结果为0
计算机中的成立与不成立
非零值表示的都是成立
只有NULL 0 \0表示不成立
bool类型初始化
bool类型正常初始化
#include
//bool型头文件 bool bNum=false; bool类型非正常初始化
bool bNum=-123;
< >!= >=<= ==
printf("%d\n",1>2); printf("%d\n", 1 >2); printf("%d\n", 1 == 2); printf("%d\n", 1< 2);
永远成立的表达式
int a=0; scanf_s("%d\n",&a); printf("%d\n",1
条件表达式不能写连续操作 1
编程中没有省略的写法
用来描述多个条件
逻辑运算符
&& 逻辑与
有0则0
非0即表示1
printf("%d\n", 1 && 1); //1 printf("%d\n", 0 && 1); //0 printf("%d\n", "I" && 1); //1
|| 逻辑或
有1则1
printf("%d\n",1||0); //1
! 逻辑取反(逻辑非)
非0则0
printf("%d\n",!"qqqqq2"); //0
短路现象(计算机偷懒现象)
已经知道表达式的值,不执行后续命令
int a = 0; 1 && (a = 123); //前面为1 不知道整个表达式的值,所以不存在短路 printf("%d\n", a); //123 0 && (a = 111); //前面为0 知道整个表达式的值,所以a=111不会执行,形成短路现象 printf("%d\n", a); //123 1 || (a = 111); //前面为1 知道整个表达式的值,所以a=111不会执行,形成短路现象 printf("%d\n", a); //123
有效值是最右边,执行过程从左往右
int i = 1; int j = 2; int a = (i += 1, j += 2, i += j, i + j); //a=i+j printf("%d\n", a); //a=10
sizeof是关键字不是函数
作用:统计类型占用字节数
作用期:编译期完成
使用%zd打印数据类型大小
printf("int:%zd,float:%zd,long:%zd\n", sizeof(int), sizeof(float), sizeof(long)); i = 0; int result = sizeof(i++); //在编译期完成,i++不执行 printf("result=%d,i=%d\n",result, i);
表达式1?表达式2:表达式3
表达式1成立,整个表达式的值为表达式2
表达式1不成立,整个表达式的值为表达式3
result=1>2?1:2; //return=2
一般用于取大值或最小值
前置++或--(先改变自己再去做其他运算)
后置++或--(先做其他运算再改变自己)
int number=1; number++; result=++number //result=3 number=3 result=number++ //result=3 number=4
内存共享问题int number = 0; int iNum = 0; //自己用scanf函数时候不需要精度控制和其他格式字符 scanf_s("%dABC%d", &number, &iNum); //输入格式必须为%dABC%d printf("%d,%d\n", number, iNum); scanf_s("%d,%d", &number, &iNum); //输入格式必须为%d,%d printf("%d,%d\n", number, iNum);
学会怎么算即可
只看前置不看后置,再看总共几部分
基础数据类型作业 填空int i = 1; int result = i++ + ++i + i++ + ++i + i++ ; //3个前置 5个部分 result=3*5=15 printf("result=%d,i=%d\n", result, i); //result=15,i=6 i=1; result = i++ * ++i * i++ * ++i * i++ ; //3个前置 5个部分 result=3^5=243 printf("result=%d,i=%d\n", result, i); //result=243
1,将下列个个小题所示表达式的值填入相应的括号内。
设变量说明如下:
unsigned i =0,j=1,a,b; short c,d; float e,f=2;
(1) a=j++?j++:i++; (2)
(2) b=!i; (1)
(3) i&j; (0)
2,设a=2,b;则执行b=1&&1;语句后,b的结果是(1)
3,设a=2,b;则执行b=a==!a;语句后,b的结果是(0)
4,若x,i,j和k都是int型变量,则计算下面表达式后x的值为(42)
x=(i=4,j=16,k=42);
5,请写出以下程序段的运行结果(0)
int x=3,y=4,z=4;
printf("%d\n",(x>=y>=x)?1:0);
6,设变量a是整型,f是实型,i是双精度浮点型,则表达式10+'a'+i*f的值的数据类型为(双精度浮点型)double
7,设x,y和z是int型变量,且x=3,y=4,z=5,则表达式!((x 8,以下程序的输出结果是() 输出结果:1 你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧int a=4,b=5,c=0,d;
d = !a && !b || !c;// 0&0||1
printf("%d\n",d);
网页题目:C语言运算符与表达式-创新互联
当前URL:http://azwzsj.com/article/dsipsp.html