运算符
因为有相当一部分和Java相同,所以,相同的部分的内容我会进行省略,只记录一些不同的东西
一.sizeof 运算符
1.作用
用来返回某种数据类型或某个值占用的字节数
2.格式
关于接收其返回值的数据类型
size_t
,这个是C语言定义的专门用于接收这个运算符返回值的一个别名数据类型
-
size_t
:是C语言中用来统一表示sizeof的返回值类型。它是一个类型别名,定义在stddef.h
头文件里面- 对应size的返回值,可能是 unsigned int ,也可能是 unsigned long。
- i:变量名
- 参数:可以是数据类型的关键字,也可以是变量名或某个具体的值
- 返回值:返回某种数据类型或某个值占用的字节数量
size_t i = sizeof(int);
3.size_t的占位符
如果当前系统不支持 %zd 或 %zu ,可使用 %u (unsigned int)或 %lu (unsigned long int)代替
size_t类型在printf()中有专门的占位符%zd
或%zu
使用例子:
printf("%zd\n", sizeof(int));
++
前缀后缀区别
二.注意:++ 和 -- 如果 不是单独使用(如:用在表达式中),前缀和后缀 差异巨大
放在变量前,先 +1、-1 再取值使用。
int a = 10;
int res = ++a; // 先 +1,再取 a 值给 res。 (先加再用)
放在变量后,先 取值用,再 +1、-1
int b = 10;
int res2 = b--; // 先取 b 值给 res2, 而后 b 再 -1 (先用再减)
代码验证:
// 目标: 掌握 ++/-- 前缀后缀差异
int main(void)
{
int a = 10;
int res = ++a; // 先+1,再用
printf("res = %d\n", res);
int b = 10;
//printf("b = %d\n", b--); // 先用,再-1
printf("b = %d\n", --b); // 先-1,再用
printf("b = %d\n", b); // 查看b值
return 0;
}
三.逗号运算符(C特有)
C语言中,逗号也是一种运算符。 用逗号将多个表达式连接起来,组成逗号表达式。一般形式为:
表达式 1,表达式 2,表达式 3,....,表达式 n
如:a+3, b+4, c+5 是一个 逗号表达式。
求解过程是 自左向右 依次求解。 整个逗号表达式的值,为最后一个表达式 n 的值。
逗号运算符的优先级,是所有运算符中最低的。
练习:分析下面代码执行过程。res 值为多少?
int i = 3;
int res = (i++, ++i, i + 5);
printf("res = %d\n", res);
总结
取整个逗号表达式值的做法,在实际编程中不常用到。 但,计算机考试中,经常出做考点。记住两句话就好了:
- 整个逗号表达式的值,为最后一个表达式 的值。
- 逗号运算符优先级最低(比赋值还低)
流程控制
一.goto关键字
1.作用
不建议使用,用这个东西会让代码的整个流程变得很混乱。
无条件的实现代码中不同语句的跳转
2.格式
执行到goto语句后,程序就会跳转到标识符所标记的位置的语句,然后从这条语句开始向下执行。(不会回到原位置)
**注:**标号属于标识符,可以自定义,用于标识要跳转的语句。
goto 标号;
3.例子
**举例2:**录入学生成绩,并计算学生的平均分。当输入-1时程序结束。
int main() {
int score, i = 0, sum = 0;
next:printf("请输入第 %d 个学生成绩(输入-1结束):", i+1);
scanf("%d", &score);
if (score != -1) {
sum += score;
i++;
goto next;
}
if (i != 0)
printf("%d个学生的平均分是 %d\n",i, sum / i);
return 0;
}
注意:goto 只能在同一个函数之中跳转,并不能跳转到其他函数。