首先,我为英语不好道歉.
在下一个简单的程序,
void fx(int *a){
for(int i=*a; i<='Z'; i++)
printf("%c", i);
}
int main(){
int a;
scanf("%c", &a);
fx(&a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在运行时输入了大写字母,它导致了致命错误,并通过杀死进程解决了.
它在下一个代码中不会引起任何问题.
//except fx()
int main(){
int a;
scanf("%c", &a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
要么
//initialize int a
void fx(int *a){
for(int i=*a; i<='Z'; i++)
printf("%c", i);
}
int main(){
**int a = 0;**
scanf("%c", &a);
fx(&a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道输入字符应该是'char'.但我无法理解上述情况.
发生了什么?
PS.我使用VS2010,c ++
这个区别
int a;
scanf("%c", &a);
Run Code Online (Sandbox Code Playgroud)
还有这个
int a = 0;
scanf("%c", &a);
Run Code Online (Sandbox Code Playgroud)
是int a;宣布未初始化a.所以它可以是任何东西.当你写作
scanf("%c", &a);
Run Code Online (Sandbox Code Playgroud)
在未初始化的情况下int,您只设置最高位,因为%c告诉scanf将输入写入a char,因此只会写入第一个字节.这可能会导致一些奇怪的行为,包括你刚才所说的.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |