c - 使用for循环计算c中的字长时出现意外结果

标签 c for-loop

我正在学习c语言,程序是关于计算字符数的。

这是代码

#include <stdio.h>

int main(void) {
    // your code goes here
    double nc;
    for (nc=0;getchar() != EOF;nc++);
    printf("%.0f\n", nc);

    return 0;
}

输入

''

不输入。

我得到的输出是 1。

在线编译器 result

不应输出等于 0,而不是 1。无法理解为什么会这样。

谢谢

最佳答案

如果您在编程中多加努力,添加几行代码,一切都会很清楚:

#include <stdio.h>

int main(void) {
    // your code goes here
    int nc;
    int c;
    for (nc=0;(c = getchar()) != EOF;nc++)
    {
        printf("The char is '%c' code: 0x%02x\n", c >= 32 ? c : '.', c);
    }
    printf("%d\n", nc);

    return 0;
}

https://ideone.com/jfGK7h

谜团解开了。您已在 ideone 输入框中按了回车键,那里有一个新行。

关于c - 使用for循环计算c中的字长时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56851809/

相关文章:

r - 如何在 R 中使用 glm 循环多次曝光和结果以及不同模型?

vba - 单个 For 语句下的多个期间

ios - 通过 for 循环编辑 NSString - iOS

python - 如何将数组中的每个元素与大数相乘而不会出现 OverflowError : Python int too large to convert to C long?

c - 无法理解 C 函数调用

c - 尝试从二进制文件读取数据,但未能将其放入结构中

c - Linux 上的 OpenGL : dlopen libGL. 所以

java - 帮助理解 java 'for' 循环

c - 如果 execvp() 成功,子进程会发生什么?

c - 在这个简单的 C 程序中分配内存时我哪里出错了?