c - 错误:函数中 ')' 标记之前的预期表达式 } else(){
问题描述
我在网上到处找,我完全迷路了,开始真的生气了。我在任何地方看到的都与我看到的错误无关,就好像整个世界都有这个问题,但是一个完全不同的解决方案。这令人沮丧,因为我在任何地方看到的修复似乎都与我的问题无关。这是我的代码,我祈祷有人可以帮助我......
#include<stdio.h>
#include<stdlib.h>
int count = 0;
int state = 1;
int copy = getchar();
int main() {
if (state != 0){
while (copy != EOF)
count++;
state = 0;
} else(){
printf("The function has finished, your name has %d characters", count);
count = 0;
state = 1;
}
}
忽略括号在深度方面的位置,我一定是个该死的傻瓜,因为无论我做什么(```,或''',或ctrl k等)我都无法让该死的代码缩进超过一行,所以我逐字逐句添加了 5 个空格。我希望我做得很好,我希望有人可以向我解释我没有看到什么......
解决方案
这段代码中有很多东西偏向一边,但很容易修复:
#include <stdio.h>
#include <stdlib.h>
// Avoid using global variables
int main() {
int count = 0;
// Always use { ... } around your blocks to avoid ambiguity, even for
// simple one-liners like this.
while (getchar() != EOF) {
count++;
}
// Don't forget \n to add a newline
printf("The function has finished, your name has %d characters\n", count);
// Return 0 from main() to be polite
return 0;
}
那只if (state != 0)
会触发第一个分支,再也没有机会再次访问该行,因此您的程序无需打印即可完成。我已经在这里删除了。请记住if
,这是一个瞬间发生的测试,因为程序通过该部分工作,而不是一个持久的测试,如果/当变量发生变化时会触发。
要记住的一件事是,在 C 中,当您分配给变量时,该变量是将值从右侧 (RHS) 复制到左侧 (LHS) 的操作。换句话说:
int x = 1;
int y = x;
x = x + 1;
printf("x=%d, y=%d\n", x, y);
这打印x=2, y=1
。说y = x
不像在数学中你在陈述某种等价。这纯粹是一个任务。这是一条指令(机器指令,字面意思)复制x
到y
, wherex
和y
是单独的“对象” 1。
1 C 术语粗略地描述可以但不总是存储在内存中的值。有时它们被保存在寄存器中。技术版本:“对象是执行环境中的数据存储区域,其内容可以表示值”。
推荐阅读
- python - 图像颜色变换
- php - BelongsToMany 字段未显示在创建/更新表单上
- fortran - 在 Fortran 中将变量作为语句(命令)运行?
- java - 将对象发送到控制器的问题
- javascript - amcharts 4 中的 amcharts 3 指南等价物是什么
- android - 在 BottomNavigationView (AndroidX) 中找不到资源
- spring-boot - 在新模式中添加第二个飞行路径实例
- android - 在 MVVM 架构中处理来自 api 端点的错误的最佳实践是什么?
- python - 用变量初始化对象参数
- r - 是否有任何用于在 R 中实现分层时间记忆的包?