内容纲要

运算符

算数运算符

常用运算符如下表

运算符 描述
+ 把两个操作数相加
从第一个操作数中减去第二个操作数
* 把两个操作数相乘
/ 分子除以分母(整型整除后取整)
% 取模运算符,整除后的余数
++ 自增运算符,整数值增加 1相当于+=1
自减运算符,整数值减少 1相当于-=1

算术表达式:

用算术运算符和括号将操作数连接起来符合C语言语法的表达式,如a*b+c-a/6。

  1. 在表达式求值时,先按照运算符的优先级别高低次序执行,如果优先级别相同,则按照结合方向执行。
  2. 算术运算符的结合方向是“自左至右”,即先与左面的运算符结合的左结合性。
  3. i++i--先用值再操作,++i--i先操作再用值,仅同行语句适用。
  4. ++与–的结合方向是自右至左的右结合性,只能用于变量。

关系运算符

运算符 描述
== 检查两个操作数的值是否相等,如果相等则条件为真。
!= 检查两个操作数的值是否相等,如果不相等则条件为真。
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真。
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。

逻辑运算符

运算符 描述
&& 称为逻辑与运算符。如果两个操作数都非零,则条件为真。
|| 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。
! 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。

位运算符

将数值的二进制数进行按位运算:

p   q   p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

赋值运算符

运算符 描述
= 简单的赋值运算符,把右边操作数的值赋给左边操作数
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数
%= 求模且赋值运算符,求两个操作数的模赋值给左边操作数
<<= 左移且赋值运算符
>>= 右移且赋值运算符
&= 按位与且赋值运算符
^= 按位异或且赋值运算符
|= 按位或且赋值运算符
  • 在进行复合运算时,如x*=y+1相当于x=x*(y+1)
  • 赋值运算符具有右结合性,y=(x=(z=1))赋值运算符可作为运算符。

三元运算符

格式:

表达式?值1 : 值2;

判断表达式,如果为真结果为值1,如果为假结果为值2。

逗号运算符

逗号运算符又称为"顺序求值运算符",用一个逗号将两个表达式连接起来。

格式:

表达式1,表达式2

将表达式1先进行求值,然后进行表达式2的求值,逗号表达式的值就是表达式2的值。

#include <stdio.h>

int main()
{
    int a,b;
    b=(a = 3*2,a*2);
    printf("%d\n",a);
    printf("%d",b);
    return 0;
}

结果如下:

6
12

其他运算符

运算符 描述
sizeof() 返回变量所占的字节大小,也可直接传入数据类型。
& 返回变量的地址。
* 指向一个变量。

优先级与结合性

优先级 运算符 名称或含义 使用形式 结合方向 说明
1 [] 数组下标 数组名[常量表达式] 左到右
() 圆括号 (表达式)/函数名(形参表)
. 成员选择(对象) 对象.成员名
-> 成员选择(指针) 对象指针->成员名
++ 后置自增运算符 ++变量名 单目运算符
后置自减运算符 –变量名 单目运算符
2 负号运算符 -表达式 右到左 单目运算符
(类型) 强制类型转换 (数据类型)表达式
++ 前置自增运算符 变量名++ 单目运算符
前置自减运算符 变量名– 单目运算符
* 取值运算符 *指针变量 单目运算符
& 取地址运算符 &变量名 单目运算符
! 逻辑非运算符 !表达式 单目运算符
~ 按位取反运算符 ~表达式 单目运算符
sizeof 长度运算符 sizeof(表达式)
3 / 表达式/表达式 左到右 双目运算符
* 表达式*表达式 双目运算符
% 余数(取模) 整型表达式/整型表达式 双目运算符
4 + 表达式+表达式 左到右 双目运算符
表达式-表达式 双目运算符
5 << 左移 变量<<表达式 左到右 双目运算符
>> 右移 变量>>表达式 双目运算符
6 > 大于 表达式>表达式 左到右 双目运算符
>= 大于等于 表达式>=表达式 双目运算符
< 小于 表达式<表达式 双目运算符
<= 小于等于 表达式<=表达式 双目运算符
7 == 等于 表达式==表达式 左到右 双目运算符
!= 不等于 表达式!= 表达式 双目运算符
8 & 按位与 表达式&表达式 左到右 双目运算符
9 ^ 按位异或 表达式^表达式 左到右 双目运算符
10 | 按位或 表达式|表达式 左到右 双目运算符
11 && 逻辑与 表达式&&表达式 左到右 双目运算符
12 || 逻辑或 表达式||表达式 左到右 双目运算符
13 ?: 条件运算符 表达式1? 表达式2: 表达式3 右到左 三目运算符
14 = 赋值运算符 变量=表达式 右到左
/= 除后赋值 变量/=表达式
*= 乘后赋值 变量*=表达式
%= 取模后赋值 变量%=表达式
+= 加后赋值 变量+=表达式
-= 减后赋值 变量-=表达式
<<= 左移后赋值 变量<<=表达式
>>= 右移后赋值 变量>>=表达式
&= 按位与后赋值 变量&=表达式
^= 按位异或后赋值 变量^=表达式
|= 按位或后赋值 变量|=表达式
15 , 逗号运算符 表达式,表达式,… 左到右 从左向右顺序运算

输入与输出

C语言中的标准输入/输出库需要使用stdio.h文件,在使用输入\输出时必须使用预处理命令#include <stdio.h>#include "stdio.h"。(printfscanf函数使用频繁,允许在使用时不写预处理命令)

putchar

输出单个字符

格式:

putchar(字符变量);

getchar

从键盘输入一个字符,赋值给字符变量或整型变量。

格式:

char c = getchar();

gets

从键盘输入一行,直到遇到终止符或EOF为止。

格式:

char a[1024];
gets(a);

puts

将一个字符串输出

格式:

puts("HelloWorld!");

scanf

格式输入字符串,按指定的格式将数据输入

格式:

scanf("格式控制字符串",变量地址);

变量地址由地址运算符"&"后跟变量名组成

格式字符串格式:

%[*][输入数据宽度][长度]类型
  1. *符用来表示该输入项,读入数据后不赋予相应的变量,跳过输入值。
  2. 输入宽度:用十进制整数指定输入宽度(字符数),超出了字符宽度,超出部分被截去。
  3. 长度:长度格式字符为lhl表示输入长整型数据如(“%ld”)双精度浮点数(“%lf”),h表示输入短整型数据。
  4. 类型
格式字符 意义
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
u 输入无符号十进制整数
f或e 输入浮点数
c 输入单个字符
s 输入字符串

printf

格式输出字符串,按指定的格式将数据输出

格式:

printf("格式控制字符串",变量);

格式字符串格式:

%[标志][输出最小宽度][.精度][长度]类型

[]为可选项

  1. 标志
标志 意义
结果左对齐,右边填空格
+ 输出符号(正好或负号)
空格 输出值为正时冠以空格,为负时冠以负号。
# 对c,s,d,u类型无影响;对o类输出时加前缀o,对x类,在输出时加前缀0x,对e,g,f类,结果有小数时才给出小数点。
  1. 输出最小宽度:用十进制整数来表示输出的最小位数。实际位数多于定义的宽度,按实际位数输出。若实际位数少于定义的宽度,则补以空格或0。

  2. 精度:精度格式符以.开头,后跟十进制整数。如果输出数字,表示小数的位数。输出的为字符,表示输出字符的个数。若实际位数大于定义的精度,截去超过的部分。

  3. 长度:格式符为hl两种,h表示按短整型量输出,l表示按长整型量输出。

  4. 类型

类型格式字符 意义
d 以十进制形式输出带符号整数(整数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀0)
x,X 以十六进制形式输出无符号整数(不输出前缀0x)
u 以十进制形式输出无符号整数
f 以小数形式输出单、双精度浮点数
e,E 以指数形式输出单、双精度浮点数
g,G 以%f或%e中较短的输出宽度输出单、双精度浮点数
c 输出单个字符
s 输出字符串

C语言

最后修改日期:2020年12月29日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。