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运算符
  • 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,以下程序的输出结果是()

int a=4,b=5,c=0,d;
d = !a && !b || !c;// 0&0||1
printf("%d\n",d);

输出结果:1

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:C语言运算符与表达式-创新互联
网址分享:http://ybzwz.com/article/dsipsp.html