c - else-if 如何在 C 中工作?
问题描述
我正在学习 C。并编写了这个程序来逐行打印输入中的单词。当我在第一个“if”中使用“{}”时,程序可以正常工作但没有它们(像这样):
if (c == ' ' || c == '\t' || c == '\n')
if (state == IN) {
putchar('\n');
state = OUT;
}
,它没有。这是什么原因?
编码:
#include <stdio.h>
#define IN 1
#define OUT 0
int main()
{
int c, state;
state = OUT;
while ((c = getchar()) != EOF) {
if (c == ' ' || c == '\t' || c == '\n') {
if (state == IN) {
putchar('\n');
state = OUT;
}
}
else if (state == OUT) {
state = IN;
}
if (state == IN)
putchar(c);
}
return 0;
}
解决方案
请记住,C 不关心缩进。
这个片段:
if (condition1)
if (condition2)
statement2;
else
statement3;
有误导性的缩进。它应该缩进如下:
if (condition1)
if (condition2)
statement2;
else
statement3;
相当于:
if (condition1) {
if (condition2) {
statement2;
} else {
statement3;
}
}
但是原始代码的缩进表明程序员实际上想要以下内容:
if (condition1) {
if (condition2) {
statement2;
}
} else {
statement3;
}
我认为始终使用大括号是个好主意,除非您需要遵循错误的编码风格要求,否则。
推荐阅读
- opencv - ffmpeg从jpgs到huffyuv视频的无损转换没有按预期工作
- python - 如何从另一个 Pandas Timeseries 创建 Pandas Dataframe 列?
- javascript - 如何在特定索引处添加到 JavaScript 计算
- javascript - 使用 Webpack 别名运行磁带
- reactjs - React 表单输入显示无法更改的数据
- r - R/stringr:正则表达式获取字符串特定部分中的特定符号
- python-3.x - 在 CENTOS7 上为支持 python3.7 的用户安装 VIM8.1 失败
- php - Laravel 与 Bjorn jquery 商店定位器
- magento2 - 如何在 Magento 2 的产品描述中显示静态块
- excel - 汇总不同工作簿中的一系列单元格