自学c语言笔记2day

一、运算符与表达式
通过运算符可以支持我们对数据进行处理。
1、基本的算术运算符:一般分为单目运算符和双目运算符。
如何区分:分辨是单目还是双目运算符主要是通过判断其有多少个操作数(如1+2,其中1、2为操作数,“+为运算符”)。
(1)单目运算符
正号运算符:“+”,举例:+a(当只有一个操作数时,则该表达式表示数本身)
符号运算符:“-”,举例:-a(当只有一个操作数时,则该表达式表示负值)
(2)双目运算符
乘法运算符:“* “,举例:a*b(当有两个操作数时,则该表达式表示a和b的乘积)
除法运算符:”/”,举例:a/b(当有两个操作数时,则该表达式表示a和b的商)
求余运算符:“%”,举例:a%b(当有两个操作数时,则该表达式表示a和b的余数)
加法运算符:“+”,举例:a+b(当有两个操作数时,则该表达式表示a和b的和)
减法运算符:“-”,举例:a-b(当有两个操作数时,则该表达式表示a和b的差)
2、不同数据类型间的混合运算
类型装换(默认):优先把低精度的操作数装换为另一个高精度的同类型操作数
例如:1+2.0,如果强制整型输出,就会得到一个错误的结果,c语言默认优先转换为精度更高的浮点型输出,才能输出正确的结果
通过对比两种不同的输出可以得出结论:

#include<stdio.h>
int main()
{
printf("整型输出:%d\n",1+2.0);
printf("浮点型输出:%f\n",1+2.0);

getchar();
}//输出结果:整型输出:0;浮点型输出:3.000000

解决方式://当浮点型数与整型相加,优先转化为浮点型,然后输出,当然,也可以强制转换为整型,即在操作数前面加上(int)

#include<stdio.h>
int main()
{
printf("整型输出:%d\n",1+(int)2.0);//当浮点型数与整型相加,优先转化为浮点型,然后输出,当然,也可以强制转换为整型,即在操作数前面加上(int)
printf("浮点型输出:%f\n",1+2.0);

getchar();
}//输出结果:整型输出:3;浮点型输出:3.000000

3、强制类型转换运算符
如上面所说,可以利用强制类型转换运算符将一个表达式转换成所需类型。
(int)(x+y);//(类型名)(表达式)(将x+y的值转换成int型)如下:

#include<stdio.h>
int main()
{
printf("%d\n",(int)(1+0.8));
printf("%f\n",(float)(1+0.8));
getchar();
}//输出结果:(int)(1+0.8)=1;整型输出会省略小数点后的数,结果输出1;浮点型输出:1.800000;

4、C运算符
除了算术运算符外,C还提供其他运算符,学习要顺序渐进,因此,这里重点学习关系运算符和逻辑运算符,两种运算符有共同的特点,即都返回输出逻辑值,从而可以作为指令,用(1和0)来表示事件的真和假。
(1)关系运算符(双目)
可以立即为操作数的比较运算,通过比较,判断该事件(表达式)的真或假,得到逻辑值1或0;
优先级相同(高):<(小于),<=(小于等于),>(大于),>=(大于等于);
优先级相同(低):==(等于),!=(不等于);
例如 “1<2”,该事件为“真”,输出逻辑值为1;

#include<stdio.h>
int main()
{
int a=3,b=3;
printf("%d\n",1<2);
printf("%d\n",a>b);
printf("%d\n",a<=b);
printf("%d\n",'a'+'b'<'c');
printf("%d\n",'a'<'c');
printf("%d\n",(a=3)<(b=5));//使用关系运算符来比较两个数的大小关系,得到的结果是逻辑值1或者0;
getchar();
}//输出结果:1 0 1 0 1 1 ,输出结果为逻辑值;

(2)逻辑运算符
详细释意出自网络:
出自网络
一般情况下,优先级:单目运算符>双目运算符
逻辑表达式:
3>1&&1<2 与
3+1 || 2 == 0 或
!(a+b) 非
逻辑运算: !0+1<1 || !(3+4) ;其中!0为真(表示1),1+1==2<1,该事件为假;同样!(3+4)也为假,因此该逻辑运算的值为0。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a=2,b=3;//逻辑运算是输出逻辑值。
printf("%d\n",3>1&&1<2);
printf("%d\n",3+1||2==0);
printf("%d\n",!(a+b));
printf("%d\n",!0+1<1||!(3+4));
printf("%d\n",'a'-'b'&&'c');
//下面是关于短路求值运算的介绍,当第一个运算确定逻辑运算结果时,将跳过第二个运算。
(a=0)&&(b=5);
printf("a=%d,b=%d\n",a,b);//a=0为假,逻辑值确定,跳过,即b没有被赋值5;
(a=1)||(b=5);
printf("a=%d,b=%d\n",a,b);//a=1为真,逻辑值确定,跳过,即b没有被赋值5;
	getchar();
	system("pause");
	}//关系运算符输出结果:1 1 0 0 1;逻辑运算符输出结果:a=0,b=3;a=1,b=3;(b未被赋值)

(3)短路求值:又称最小化求值,是一种逻辑运算符的求值策略;只有当第一个运算数的值,无法确定逻辑运算结果,才会对第二个运算数进行求值。C语言对于逻辑与和逻辑或就采用了短路求值的方式;(只要满足了前一个,直接跳过下一个,输出结果)例子在上方已举出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值