4.运算符表达式和语句

  • =

    • 数据对象:泛指数据在内存的存储区域
    • 左值:表示可以被更改的数据对象
    • 右值:能赋给左值的量
  • +:加

  • int x = 10 + 10;
    printf("%d\n",x);//20
    
  • -:减

  • int x = 10 - 10;
    printf("%d\n",x);//0
    
  • *:乘

  • int x = 10 * 10;
    printf("%d\n",x);//100
    
  • /:除

  • int x = 10 / 10;
    printf("%d\n",x);//1
    
  • %:取余数

  • int x = 10 % 3;
    printf("%d\n",x);//1
    
  • +=:加等于

  • int x = 10;        //输入一个叫x的变量,然后将10赋值给x
    x += 10;           //x=x+10
    printf("%d\n",x);  //20
    
  • -=:减等于

  • int x = 10;          //输入一个叫x的变量,然后将10赋值给x         
    x -= 10;	       //x=x-10
    printf("%d\n",x);    //0
    
  • *=:乘等于

  • int x = 10;            //输入一个叫x的变量,然后将10赋值给x         
    x *= 10;	         //x=x*10
    printf("%d\n", x);     //100
    
  • /=:除等于

  • int x = 10;            //输入一个叫x的变量,然后将10赋值给x         
    x /= 10;	         //x=x/10
    printf("%d\n", x);     //1
    
  • %=:取余等于

  • int x = 10;            //输入一个叫x的变量,然后将10赋值给x         
    x %= 4;	         //x=x%10
    printf("%d\n", x);     //2
    
  • ++:自加1

  • int i = 5; 
    printf("%d\n",i--);     //结果是5  i++ :先输出i 再自减1 输出5    5-1=4
    printf("%d\n",--i);     //结果是3  ++i :先自减1 再输出i 4-1=3   输出3
    
    • ++i是先++(加一),在计算表达式的值
  • --:自减1

  • int i = 5;
    printf("%d\n",i--);     //结果是5  i++ :先输出i 再自减1 输出5  5-1=4
    printf("%d\n",--i);     //结果是3  ++i :先自减1 再输出i 4-1=3 输出3
    
  • 逗号运算符

    int a = 2;
    int b = 3;
    int c = 4;
    int d = 5;
    int i = (b = d, c + b + a);//先左后右 b=d=5 i=4+5+2=11
    printf("%d\n", i);         //11
    //逗号表达式先求逗号左边的值,然后求右边的值,整个语句的值是逗号右边的值
    
2.比较运算符	 
  
  如果是正确:1(真)  如果是错误:0(假)
  在c语言中是没有bool值的所以c语言中真用1表示,假用0表示.
  1.等于  : ==
	printf("%d\n", 10 == 1);    // 0
  2.不等于: !=  
  	printf("%d\n", 10 != 1);    // 1  
  3.大于:	>
        printf("%d\n", 10>1);	    // 1  
  4.小于: <
        printf("%d\n", 10<1);	    // 0  
  5.大于等于:>=  
  	printf("%d\n", 10 >= 1);    // 1  
  6.小于等于:<=  
  	printf("%d\n", 10 <= 1);    // 0  	
3.逻辑运算符
	 1.!    非			不是
	         int a = 10;
	         printf("%d\n",!a); //0 	 
	 2.&&   与		    并且   两者都为真
	 	 printf("%d\n",0&&1);//0 
	 3.||   或		    或者   两者有一个是真的就是真的
	 	 printf("%d\n",0||1);//1

案例:考试成绩小案例
考试:就是大于等于60 就是及格 小于60分就是不及格 一些其他的评判标准
判断 激励制
A优秀 90分以上 500
B良好 75分以上 200
C及格 60分以上 作业本
D不及格 45-60不及格 糖果
E差 45分以下差 竹笋炒肉

   int Score;	
   printf("请输入成绩:\n");
   scanf("%d", &Score);
   if (Score >= 90){
	   printf("等级:A(优秀)  奖励:500\n");
   }
   else if (Score >= 75)
   {
	   printf("等级:B(良好)  奖励:200\n");
   }
   else if (Score >= 60){
	   printf("等级:C(及格)    奖励:作业本\n");
   }
   else if (Score >= 45){
	   printf("等级:E(不及格) 奖励:糖果\n");
   }
   else {
	   printf("等级:E(差)     奖励:竹笋炒肉\n");
   }

3.位运算符
1.按位与:& (shift+数字7)

	printf("%d\n",9 & 7);        //结果是:1
/*         9的原码是    0000 1001
           7的原码是    0000 0111   
           按位与: &    0000 0001  
           运算方法;有0出0,全1出1  

*/	                     		 

​ 2.按位或:|

	printf("%d\n",9 | 7);        //结果是:15
/*	   9的原码是    0000 1001
	   7的原码是    0000 0111
	   按位或:|    0000 1111
	   运算方法;有1出1,全0出0
*/ 

​ 3.取反:~

	printf("%d\n", ~ 7);         //结果是:-8
/*	   7的原码是    0000 0111
           取反:~      1111 1000   (负数的补码)
	   原码=反码+1  1000 0111+1  =  1000 1000  -8
*/

​ 4.按位异或:^

	printf("%d\n",9 ^ 7);        //结果是:14
/*	   9的原码是    0000 1001
	   7的原码是    0000 0111
           按位异或:^  0000 1110       14
 	   运算方法:一样出0,不一样出1 
*/

​ 5.左移:<<

    int i = 9;
	printf("%d\n",i<<2);        //结果是:36
/*	   9的原码是    0000 1001
           左移:<<   000010 0100   去掉溢出的位数   0010 0100   36         
*/

​ 6.右移:>>

    int i = 9;
        printf("%d\n",i>>2);        //结果是:2
/*	   9的原码是    0000 1001
	   右移:>>    0000 001001  去掉溢出的位数   0000 0010   2
*/

4.优先级



三目运算符:?:
//最早的if与else
int Score;//学分

	printf("请输入你考试的分数:\n");
	scanf("%d", &Score);//从键盘获取一个数据存储Score

	//轻量级的逻辑判断就可以用
	Score >= 60 ? (printf("YES!!!\n") ):(printf("NO!!!\n"));

	//(第一段是判断条件) ? (判断正确:结果1) : (判断错误:结果2)

		//if (Score >= 60){
		//	printf("YES!!!\n");
		//}
		//else{
		//	printf("NO!!!\n");
		//}
posted @ 2022-09-23 17:29  咸鱼呦  阅读(19)  评论(0)    收藏  举报