小编Sgr*_*grA的帖子

Turbo C++:为什么printf在没有传递变量的情况下打印期望值?

在多项选择测试中提出了一个问题:以下程序的输出结果如何:

#include <stdio.h>

int main(void)
{
    int a = 10, b = 5, c = 2;

    printf("%d %d %d\n");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并且选择是10,5和2的各种排列.出于某种原因,它适用于我们在大学时使用的Turbo C++.但是,在使用gcc(在启用-Wall时发出警告)或clang(启用了-Wformat并在默认情况下发出警告)或在Visual C++中编译时,它不会.正如预期的那样,输出是垃圾值.我的猜测是它与Turbo C++是16位,在32位Windows XP上运行这一事实有关,或者TCC在标准方面很糟糕.

c printf undefined-behavior turbo-c

7
推荐指数
1
解决办法
2300
查看次数

证明:毕达哥拉斯三重算法由欧几里德公式更快?

作为课堂作业,我要编写一个C程序来生成低于给定值't'的所有毕达哥拉斯三元组.这是我的代码,它首先生成一个原始的三重峰(A,B,c)使用欧几里得式,并打印形式(KA,KB,KC)1 <KC <T的所有三元组.

for (i = 2; i < (sqrt(t) + 1); i++)
    for (j = 1; j < i; j++)
        if ((gcd(i,j) == 1) && ((i-j) % 2) && ((i*i + j*j) < t))
        {
            k = 0;
            a = i * i - j * j;
            b = 2 * i * j;
            c = i * i + j * j;

            while ((++k) * c < t)
                printf("(%d, %d, %d)\n", k*a, k*b, k*c);
        }
Run Code Online (Sandbox Code Playgroud)

我遇到的大多数其他算法使用嵌套循环来检查平方和,并且随着t的增长而明显慢于此.是否有可能推断出它确实更快的证据?

c algorithm optimization

5
推荐指数
1
解决办法
2817
查看次数