#include <stdio.h>
float x;
int func1(){
static int s=11;
s+=2;
x++;
return s;
}
int main(){
int i;
for(i=0; i<2; i++)
printf("%d,",func1( ));
printf("\n%.1f\n",x);
return 0;
}
fun1输出的是s吗 printf("\n%.1f\n",x);这个输出是怎么换行的
不是s,是s静态变量的值
func1被调用2次,由于s是静态变量,所以值会累加。第一次输出13,第二次输出15
x是全局变量,代码糟糕的地方是没有给x赋予初始值,所以有问题。
func1函数每调用一次,x值加1,如果x初始为0,则最终输出为2.0
换行是因为输出语句中有\n
#include <stdio.h>
float x;
int func1(){
static int s=11;
s+=2;
x++;
return s;
}
int main(){
int i;
for(i=0; i<2; i++)
printf("%d,",func1( ));
printf("\n%.1f\n",x);
return 0;
}
输出:
13,15,17
3.0
其中\n为换行的转义字符。%.1f表示以小数点后保留一位浮点输出
最后输出:
13,15,//换行符
2.0 //换行符
fun1()函数返回的是静态变量 s 的值,循环2次输出 s 的值。
printf("\n%.1f\n",x); 先当前行遇到 '\n' 换行,然后输出 %.1f 即 x 的值,在遇到 ‘\n' 换行。
局部变量未付初始值是随机数,全局变量未付初始值好像是0