c基础day4

一运算符

                (1)算术运算符

运算符作用
+  -  *两数相加、相减、相乘
/

如果左右两个操作数都是整形,就是取整运算,结果就是整形

如果有一个操作数是浮点型,结果就是浮点型,除数不能为0

%要求:两个操作数必须是整形,取余,除数不能为0

                (2)自增自减

                a++    a--:先使用a,然后再加/减1

                ++a    --a:先加/减1,再使用a

a++    ++a题目

#include<stdio.h>
int main(void)
{
	int num=0;
	int num1=9;
	
    int num2=num1++||++num;//num1为9真,然后加1,||左边为真不需要执行右边了,num2在这里为1
	int num3=--num2&&num++||++num1;/* --num2先减后用,&&左边为0,不需要算与右边的了(num++未执     
                                     行),所以||左边为0,然后执行++num1,为11.所以num3为1                        
                                     
    printf("%d\n",num);//   0
	printf("%d\n",num1);//  11
	printf("%d\n",num2);//  0
    printf("%d\n",num3);//  1
	
    return 0;
}

二,赋值运算符

                =:赋值运算

                a=b,把右赋给左,b的值赋给a

a+=1a=a+1
a-=1a=a-1
a*=1a=a*1
a/=1

a=a/1

                在终端输入一个四位数,输出个位,十位,百位,千位,以及和

#include<stdio.h>
int main(void)
{
	int num,a,b,c,d,sum;
	printf("请输入一个四位数:");
	scanf("%d",&sum);
	a=sum%10;
	b=sum/10%10;
	c=sum/100%10;
	d=sum/1000;
	printf("个位=%d\n",a);
	printf("十位=%d\n",b);
	printf("百位=%d\n",c);
	printf("千位=%d\n",d);
	sum=a+b+c+d;
	printf("sunm=%d\n",sum);
	return 0;
}

 

三,关系运算符

               非真即假 ,非0即1

                0假,1真

==判断左右是否相等
a>b判断a是否大于b
a<b判断a是否小于b
a>=b判断a是否大于等于b
a<=b判断a是否小于等于b

四,逻辑运算符

&&    逻辑与

两数都真

有一个假为假

都假为假

||       逻辑或

一个为真就为真

两个都为假才是

特殊:a||b如果a是真了,没必要计算b了,

逻辑短路现象

!     逻辑非逻辑非

逻辑同或,逻辑异或,逻辑与,逻辑或_正义的琼的博客-CSDN博客

                在终端输入一个数,判断是否在【12,54】区间

#include<stdio.h>
int main(void)
{
	int a;
	printf("输入一个数:\na=");
	scanf("%d",&a);
	if(a>=12&&a<=54)
	{
		printf("在\n");
	}
	return 0;
}

五,条件运算符

                 c语言唯一一个三目运算符,三个表达式

                表达式1表达式2表达式3

                先执行1,如果1真,运行2;

                                如果1假,运行3;

取两个数较大值:

#include <stdio.h>
int main(int argc, const char *argv[])
{
	int a,b,max;
	scanf("%d %d",&a,&b);//12  13
	max=a>b?a:b;
	printf("%d\n",max);//13
	return 0;
}

六,逗号运算符

                (表达式1,表达式2,表达式3·····表达式n)

                 每个表达式都会执行,最后会取最后一个表达式的结果

                 vim 自动补全

                cd ~

                cd .vim

                cd snippets(ls 下面有各种语言的,我们选c.snippet改c语言的)

                vim c.snippet(在最后改,记得加tab   下面用l补) 

#include <stdio.h>
int main(int argc, const char *argv[])
{
	int num=10,num1=101;
	int num2=(num-=10&&(num1+=9)||(num*=3),num++,++num,num1--);
		printf("%d\n",num);//2
		printf("%d\n",num1);//100
		printf("%d\n",num2);//101
	return 0;
}

这里的num-=10就没有加括号,在&&中默认先计算左边的表达式,&& ||优先级大于* /
但是括号最大
先计算num-=10,即num=0

                              

七,位运算符

                对二进制进行运算的day4 8.c

                逻辑同或,逻辑异或,逻辑与,逻辑或_正义的琼的博客-CSDN博客

                一般使用无符号数进行运算

                 两个二进制位结果进行计算

&按位与0000 1001 & 0000 1000 = 0000 1000=8
|按位或0000 1001 | 0000 1000 = 0000 1001=9
^

按位异或

同0异1

0000 1001 ^ 0000 1000= 0000 0001=1
~按位取反~ 0000 1001 = 1111 0110=247
>>按位右移0000 1001 >> 3 =0000 0001=1
<<按位左移0000 1001<<  2  =0010 0100=36

                位运算常用于对数据的位置操作

                 0任何数都是0,1任何数都是数本身
                 0任何数都是数本身, 1任何数都是1
                 0异或任何数都是数本身,1异或任何数都是取反

                 练习:已知unsigned char data; 写出把data的第三位置1的表达式,把data的第四位置0                              的表达式,把data的第六位按位取反的表达式

                     解:data|=(0x1<<3);        data&=~(0x<<4);        data^=(0x1<<6)

#include <stdio.h>
int main(int argc, const char *argv[])
{
	unsigned char data = 0x76; //0111 0110
	data|=(0x1<<3);            //0000 1000 = 0x1<<3
	printf("%#X\n",data);      //0111 0110  | 0000 1000  = 0x7E
    
    此处date的值是上一个值,不是最开始的0x76,以为已经把上一个值存入进去了
    data&=~(0x1<<4);            //第三位置1:0111 1110  0x7E
	printf("%#X\n",data);       //1110 1111 ~(0x1<<4)                              
                                //0111 1110 & 1110 1111  = 0x6E

    data^=(0x1<<6);             //第四位置0:0110 1110   0x6E
	printf("%#X\n",data);       //0110 1110 ^ 0100 0000 
	return 0;                   //0100 0000 = 0x1<<6;
} 	                            //第六位取反:0010 1110   0x2E                                   	
	 //两数异或,同0异1
	 //0异或任何数结果都是数本身,
	 //1异或任何数都是对该位取反                              

八,sizeof运算符

                sizeof求数据的大小

                sizeof(数据)括号里面放什么就求什么,

char c = 'a';
printf("%ld",sizeof(int));
printf("%ld",sizeof(short));
printf("%ld",sizeof('a'));
printf("%ld",sizeof(c));
printf("%ld",sizeof("abc"));
printf("%ld",sizeof(char));

结果:
4
2
4
1
3
1

 C语言中sizeof()的用法_surplus-G的博客-CSDN博客

九,运算符优先级

                单算移关于:

                异或逻条赋:

                括号的优先级最高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值