前言

我真就读了个澳门放假大学,我已经连续三周没上计算机课了,但是进度却在不断前进,要不是之前学过点就寄了。希望之后能快点恢复通关和线下上课吧,其他课网课也挺痛苦的。根据老师上传到moodle上的课堂记录,这节课大概讲了for循环、小括号的作用和scanf的返回值吧。


For循环

关于循环的内容我上一篇全部都说完了,可以参考前一篇。

【C语言学习之路】第六节课——循环、左右值以及typedef关键字

关于for循环和while循环的区别:

while循环和for循环的区别就是没有一个标记变量记录次数,意思说for是在知晓循环次数时用比较好,而while循环在不知道循环次数只知道循环终止点时用比较好。


小括号的作用

根据老师上课所记录的:

usages of ( )
1.) ( ) in expression
2.) function call operator functionName(argument1, arg2)
3.) int x = (int) 3.14 ; // cast

其中第一第二点都见过了,而第三点转换类型我们没见过,下面是关于转换类型的内容。

转换类型

语法为:

(type)something

表示强制类型转换,把后面的something转换为type的类型。

例如:

int x = (int) 3.14
printf("%d",&x);

 那么此时的x已经是整数型了,即x=3;

还有一种类型转换:

(type &)something

相对上面的那种多了一个“&”,这个东西相当于告诉编译器将something看成type对待(内存里的数据不做任何转换)。

这样就会导致可能会导致转化结果不一样,特别是存在浮点时。


scanf返回值

我们知道scanf是输入函数,那么可不可以写x=scanf("%d",&y);呢?当然是可以的,因为scanf也具有返回值,而这个返回值是可省略的。

例如:

z=scanf("%d", &x);

 这么z等于什么呢,我们带进程序里一看,我们输入随便一个数,答案等于1.

如果我们输入一个字符之类的非整数,答案就等于0了。

那么就很明显了,scanf的返回值:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。

故我们得到结论:

  • scanf() 函数有返回值且类型 int 型,当发生错误时立刻返回 EOF。
  • scanf() 函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。

同理我们也可以探索一下printf的返回值:

int a=43;
printf("%d\n",printf("%d",printf("%d",a)));

 咋一看可能以为这个语句是问题的,但是却可以正常编译,说明printf也是有返回值的。

我们看看答案,答案是4321.

一,执行第三个printf,输出A的值“43”
二,执行第二个printf,输出"printf("%d",A)“的值,在结果中对应的是"2”
三,执行第一个printf,输出"printf("%d",printf("%d",A))“的值,为"1”
由此我们看出,执行第二个printf时输出的"2"应该是"printf("%d",A)“返回值,而执行第一个printf时输出的"1"应该是第二个printf的返回值。
那么printf的返回值到底是什么呢?
观察第二个printf的输出值和第三个printf的输出值,第一个printf的输出值和第二个printf的输出值不难发现:
printf的返回值就是输出的字符数量。

那么结论就是:printf()返回值是是输出的字符数量,包括数字,字母,标点符号,空格等


后记

真的不想上网课了,救救孩子吧。

这里的一切都有始有终,却能容纳所有的不期而遇和久别重逢。
最后更新于 2024-01-14