1. 运算符分类
1. 算术运算符
先假设变量 A 的值为 10,变量 B 的值为 20
在这里注意后两个运算符 ++ 和 -- ,在赋值运算时他们的位置会影响结果。
下面以++为例
A++:
先使用变量A的当前值,然后将其值+1,在表达式中返回的是自增前的值。
int A = 5 ;
int B = A++ ;
printf("%d %d",B,A) ; // B的值为5,A的值为6
// 将A初始值赋给B后,A才自增
++A:
先将变量A加1,然后再赋值给新变量,在表达式中返回的是自增后的值。
int A = 5 ;
int C = A++ ;
printf("%d %d",C,A) ; // C的值为6,A的值为6
// A先自增后,再将值赋给C
2. 关系运算符
3. 逻辑运算符
4. 位运算符
先引入真值表:
其中,p ^ q 是指 异或 相异为1,相同为0
下面列举常见位运算符:
假设变量 A 的值为60,变量 B 的值为13
60 二进制 0011 1100
13 二进制 0000 1101
下面的操作是 每一位 单独运算后再合在一起得到的。
5. 赋值运算符(重要)
前 7 行较为常见,赋给自己的
一般先执行第一个符号,再执行第二个符号
6. 其他运算符
指针部分后续会出
此处补充 三目运算符:
格式:
条件表达式 ? 表达式1 : 表达式2 ;
若条件表达式为真,则表达式值为 表达式1 的值,反正为 2 的值。
举两个例子:最大值二选一、奇偶判断
// 最大值二选一
int a = 10 , b = 20 ;
int max = (a > b) ? a : b ;
// 如果a>b,则返回a的值
// 奇偶判断
int num = 7 ;
printf("The number is %s.",(num % 2 = 0) ? "even" : "odd");
// 是偶数则余数为0,为even,反之为odd
2. 练习
小乐乐定闹钟(牛客BC24)
输入描述:输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。
输入格式:hour:minute k(如hour或minute的值为1,输入为1,而不是01)
(0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 10的9次方)
输出描述:
对于每组输入,输出闹钟应该设定的时刻,输出格式为标准时刻表示法(即时和分都是由两位表示,位数不够用前导0补齐)。
输入:0:0 100
输出:01:40
#include <stdio.h>
int main()
{
int hour, minute, k ;
scanf("%d:%d %d",&hour,&minute,&k);
hour = (hour + (k + minute) / 60) % 24; // 24小时循环
minute = (minute + k) % 60 ;
printf("%02d:%02d",hour,minute);
return 0;
}
本题注意:
1. 输入的格式以题目要求为准
2. 注意小时是24小时循环,且在计算小时hour时注意加上起始的minute
3. 输出时域宽为2,空位补0,使用 “ %02d ”
本文主要介绍各种运算符,注意赋值运算符的运用。