所以,我只有一个简单的代码。我被要求核实它会运行多少次。
int i = 0;
int s = 0;
int b = 0;
while(i < 10){
printf("Enter an integer: ");
scanf("%d" ,&x);
s += x;
if(x > b){
b = x;
}
i++;
我声明由于 x 未被声明,它永远不会运行。我被告知我错了,它被宣布了。
我的问题是可以scanf()声明一个变量吗?或者你会说这个代码运行的唯一方法是声明 x 吗?
答案 0 :(得分:4)
x必须声明,你的例子是错误的,但你可以在scanf调用中使用复合文字:
scanf("%d" , &(int){0} ) ; //(int){0} is a compound literal
//and its address is passed to the function
scanf会在该变量中写入一个数字,唯一的问题是你无法访问它,因为你没有它的地址。如果您有一个返回该复合文字地址的函数,则可以使用它。
答案 1 :(得分:2)
在此代码段中,未声明变量x。编译器应发出错误。在scanf
&x
中是一个参数表达式。它不是声明,也可能不是声明。
如果假设声明了x,那么声明
我++;
有一个右括号,然后循环将重复10次。))
代码的目的似乎是计算10个整数的总和,并找出它们中的最大正整数。
但无论如何这是一个非常糟糕的代码,它不值得讨论。:)
答案 2 :(得分:2)
您是否尝试过运行它以查看会发生什么?
它不会编译,因为x未被声明,并且因为最后缺少一个结束的大括号。