遇到了一个新的问题,差点就看不明白了,就是i&&printf(" ");这条语句,差点就忘记printf是个函数,而且有返回值的
printf(" ")函数的返回值是看输出了多少个字符数,就返回了多少,返回值类型为int型的
再来介绍一下&&逻辑判断符,该逻辑判断符当且仅当俩边的表达式全为真,才表达为真,即 true&&true ->true,而且如果判断到左边的表达式为false,就不会再去判断右边的表达式,再去判断右边的表达式就会浪费cpu的的时间,这叫短路评估
所以i&&printf(" ");就显而易见了
如果还看不懂,那就再看看下面这串代码
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
for(int i=0;i<5;i++){
i&&printf(" ");
printf("%d",i);
}
printf("\n");
for(int i=0;i<5;i++){
if(i) printf(" ");
printf("%d",i);
}
return 0;
}
中间的这俩for循环的表达效果是一样的,都是让最后一个输出数字后面没有空格。如果还不明白的小伙伴,自己上机实验一下吧