运算符

因为有相当一部分和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 只能在同一个函数之中跳转,并不能跳转到其他函数。

最后修改:2024 年 03 月 11 日
如果觉得我的文章对你有用,请随意赞赏