c - C程序的令人困惑的输出
问题描述
为什么编译器显示x
好像0
我在循环int x;
内部定义的值。for
但是当int x
从for
循环中删除时给出x
as的值10
。
#include<stdio.h>
int main() {
int x = 0, i;
for(i = 1; i <= 10; i++) {
int x;
x = 10;
}
printf("%d", x);
}
解决方案
如果你有int x
你的 for 循环,你创建一个新x
变量。这意味着x
您的程序中实际上有两个变量,一个可以从您的main()
-function 访问,另一个只能在 for 循环内访问。如果您x
从 for 循环中访问,编译器将选择最接近的一个。
如果你没有int x
在你的 for 循环中,那么只有一个x
,你的程序会输出10
.
推荐阅读
- html - 背景设置后的部分与上一个重叠
- reactjs - 在“连接(注册)”的上下文或道具中找不到“商店”
- css - 在 flex 容器/父 div 中设置子元素的宽度
- javascript - 如何以编程方式隐藏选择选项?
- xcode10 - 更新到 iOS 12 后应用程序崩溃,未指定错误。它显示为 EXC_BAD_ACCESS
- php - 按属性列出产品 prestashop
- javascript - 如何知道在 *ngFor 循环中单击了哪个按钮?
- iis - 带有 nuxt.js 和 IIS 的不区分大小写的 router.base
- crash - 每次打开 SQL Developer 都会崩溃
- python - 如何使用 matplotlib/gridspec 修改子图之间的宽度?