sách gpt4 ai đã đi

Lập trình C - Sự nhầm lẫn về dấu ngoặc nhọn

In lại 作者:行者123 更新时间:2023-12-04 11:02:35 31 4
mua khóa gpt4 Nike

以下代码用于将多个连续的空格替换为1个空格。虽然我设法做到了,但我对花括号的使用感到困惑。

这个实际上运行良好:

#include 
#include
int chính()
{
int ch, lastch;
lastch = 'a';
while((ch = getchar())!= EOF)
{

if(ch == ' ')
{
if (lastch != ' ')
putchar(ch);


}
khác
putchar(ch);
lastch = ch;

}
}

但我无法弄清楚为什么这个不是,只通过将大括号放在内部循环和 else 语句中:

#include 
#include
int chính()
{
int ch, lastch;
lastch = 'a';
while((ch = getchar())!= EOF)
{

if(ch == ' ')
{
if (lastch != ' ')
{
putchar(ch);
}

}
khác
{
putchar(ch);
lastch = ch;
}
}
}

我不能用大括号将循环括在循环中吗?我读到第二个是使其可读的好习惯,但我做错了什么?

1 Câu trả lời

两者之间的唯一区别是khác 的范围。没有大括号,它一直跨越到完整语句的末尾,即下一个 ;,即下一行:

khác
putchar(ch); /* end of else */
lastch = ch; /* outside of if-else */

有了大括号,它也覆盖了 lastch 赋值。

这同样适用于 nếu như 语句,但是只有一行,所以没有区别。

关于C 编程 - 关于花括号的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30973271/

31 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com