相关疑难解决方法(0)

打印%d时printf的行为而不提供变量名称

我刚刚遇到一个奇怪的问题,我正在尝试printf一个整数变量,但是我忘了指定变量名,即

printf("%d");
Run Code Online (Sandbox Code Playgroud)

代替

printf("%d", integerName);
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是程序编译,有输出,它不是随机的.事实上,它恰好是我想要首先打印的整数,恰好是m-1.

printf只要程序继续运行,错误语句就会一直输出m-1 ...换句话说,它的行为就像语句读取一样

printf("%d", m-1);
Run Code Online (Sandbox Code Playgroud)

谁知道这种行为背后的原因?我在没有任何命令行选项的情况下使用g ++.

#include <iostream>
#define maxN 100
#define ON 1
#define OFF 0

using namespace std;

void clearArray(int* array, int n);
int fillArray(int* array, int m, int n);

int main()
{
    int n = -1, i, m;
    int array[maxN];
    int found;

    scanf("%d", &n);

    while(n!=0)
    {
        found=0;
        m = 1;
        while(found!=1)
        {
            if(m != 2 && m != 3 && m != 4 && m != 6 && m != …
Run Code Online (Sandbox Code Playgroud)

c printf

11
推荐指数
2
解决办法
1万
查看次数

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 ×2

printf ×2

turbo-c ×1

undefined-behavior ×1