本文不详细讲解全部运算符,只调出最容易踩坑和不好理解的部分作出分析
一、转义运算符
转义字符 | 含义 | 转义字符 | 含义 |
---|---|---|---|
\n | 换行 | \t | 水平制表 |
\v | 垂直制表 | \b | 退格 |
\r | 回车 | \f | 换页 |
\a | 响铃 | \\ | 反斜线 |
\ ’ | 单引号 | \ " | 双引号 |
\ddd | 3位8进制代表的字符 | \xhh | 2位16进制代表的字符 |
下面用人话解释一下\v \t。
- “制表位位置”的英文解释:tab stop position
- \t 说白了就是相当于按一下键盘Tab键
- \v的意思是下面字符从下一行开始输出,且开始的列数为“\v”前一个字符所在列后面一列
如printf(“12\v34”) - 对制表符感兴趣的朋友可以看一下下面这个博客
链接:制表符
“\ddd” “\xhh”
反斜线后面接的是ASCII码值。比如printf("\101");和printf("\x41");打印的结果都是大写字母A
二、运算符
1.基本算术运算符中的“%”和“\”
% | 除法运算符 | 双目运算符 | 结合方向:自左向右 | 两侧必须是整形数据 |
---|---|---|---|---|
\ | 求余(取模)运算符 | 双目运算符 | 结合方向:自左向右 | 两侧数据类型无要求 |
- “%”运算后的结果的正负由左侧的数确定,如:
7%2=1;
-7%2=-1;
7%-2=1;
-7%-2=1; - “/”
两整数相除,结果为整数。如:
7/2=3;
7/2.0=3.5;
2.移位运算符
位运算符在嵌入式编程(对寄存器的写值上,不接触嵌入式的请自行忽略)中有极其重要的作用,可以参考这篇博客:
链接:位运算在寄存器中应用
赋值运算符
只强调一点:结合方向为自右向左,比如:
a+=a*=a-=3等价于
a=a+(a=a*(a=a-3))
逻辑运算符&& || !
- C语言中0为假,非0为真
然后直接上代码:
/*
*brief:C语言逻辑运算
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=0,j=2,k=3,a=0;
printf("i=%d,j=%d,k=%d\n",i,j,k);
//逻辑非部分
printf("!i=%d,!j=%d\n",!i,!j);
//逻辑与部分
printf("i&&j=%d,j&&k=%d\n",i&&j,j&&k); //都是真则为真,否则为假
//逻辑与部分
printf("i||j=%d,j||k=%d,i||a=%d\n",i||j,j||k,i||a); //只要有一个为真则为真,全假时才为假
return 0;
}
运行结果:
2.逻辑运算具有短路性质:
运算按照从左到右的顺序,一旦能够确定逻辑表达式的值,就立即结束运算
/*
*brief:逻辑运算的短路性质
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=0,j=2,k=3;
int b=1,c=9;
if(i&&j&&k)b=5; //a为0,直接判断为假,编译器不会再向下判断
if(j||k||i)c=6; //j=1,直接判断为真,编译器不会向下进行判断
printf("b=%d,c=%d",b,c);
}
输出结果:
PS:如果文章有错误,欢迎在评论区指正