c - 复代数表达式的值保持为零

标签 c gcc

我用 C 语言编写了这段代码,由于某种原因,它始终输出零,而不是正确处理数字。 有人可以解释一下这里发生了什么事吗?我懂 C#,但不懂 C。

#include <stdio.h>

int main(void) {
    // I want to express 1/6n*(n + 1)(2n + 1)

    int n = 1;
    while(n != 0){
        scanf("%d", &n);
        printf("%d", 1/6 * n * (n + 1) * (2 * n + 1));
    }

    return 0;
}

提前致谢!

我正在使用 Code::Blocks + GCC 编译器。

最佳答案

解决办法是:

#include <stdio.h>

int main(void) {

    int n = 1;
    while(n != 0){
        scanf("%d", &n);
        printf("%d", n * (n + 1) * (2 * n + 1) / 6);
    }

    return 0;
}

关于c - 复代数表达式的值保持为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56906643/

相关文章:

C 代码在 Intel Xeon E5-2650 上的性能

c - 为什么 GCC 说一个变量在未使用时未使用?

objective-c - 从 GCC 中的单独文件内联函数

在 GNU make 中一次编译多个 **changed** 源文件

c++ - 使用 C++“ Hook ”内存地址?

c - 是否有 C 函数的时间(成本)表?

c - 为什么 .bss 显式地将全局变量初始化为零?

c++ - 为什么这适用于 Visual C++,但不适用于 gcc?

C POSIX 正则表达式失败

c - gcc 编译器用 puts 切换 printf 调用