前言
我真就读了个澳门放假大学,我已经连续三周没上计算机课了,但是进度却在不断前进,要不是之前学过点就寄了。希望之后能快点恢复通关和线下上课吧,其他课网课也挺痛苦的。根据老师上传到moodle上的课堂记录,这节课大概讲了for循环、小括号的作用和scanf的返回值吧。
For循环
关于循环的内容我上一篇全部都说完了,可以参考前一篇。
关于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()返回值是是输出的字符数量,包括数字,字母,标点符号,空格等。
后记
真的不想上网课了,救救孩子吧。
Comments NOTHING