C printf 打印随机数

标签 c printf

我对 C 编程非常陌生,并且有一个疑问...有人要求我查找 C 代码某些段中的错误...这一段让我有点困惑,所以非常感谢您的帮助...

int main(void)     
{
    int myInt = 5;
    printf("myInt = %d");
    return 0;
}

据我了解,这段代码没有任何问题。我想知道的是为什么这个语句打印出一个随机数??

我得到的输出是

myInt = 1252057154

非常感谢您的帮助...谢谢

最佳答案

您应该阅读更多有关C编程的内容。

并且您应该在编译时启用所有警告和调试。对于 GCC,这意味着 gcc -Wall -Wextra -g(至少在 Linux 上)。

编译时

gcc -Wall -Wextra -g john.c -o john

我收到以下警告:

john.c: In function ‘main’:
john.c:4:5: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
john.c:4:5: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
john.c:4:5: warning: format ‘%d’ expects a matching ‘int’ argument [-Wformat]
john.c:3:9: warning: unused variable ‘myInt’ [-Wunused-variable]

所以更正很简单:

/* file john.c */
#include <stdio.h>
int main(void)     
{
  int myInt = 5;
  printf("myInt = %d\n", myInt);
  return 0;
}

编译时不会出现警告。

请注意 printf 格式字符串末尾的 \n。这很重要。

始终启用编译器可以向您提供的所有警告并信任编译器,因此请更正您的代码,直到不再发出警告为止。

学习使用调试器(例如 Linux 上的 gdb)。

您观察到的行为是未定义的行为任何事情都可能发生在C符合标准的实现上(甚至是爆炸)。

黑客快乐。

关于C printf 打印随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684880/

相关文章:

c++ - 为什么 EXTERN_C 宏在其 C 形式中遗漏了 `extern`?

c - strncmp() 在我的快速排序 c 编程中给出 Segmentation Fault 11

c - 为什么我的 C 函数返回不正确的 int?

c++ - 从 Visual Studio 2013 迁移到 Visual Studio 2015 后,调用 printf 样式的函数会导致警告

c - 如何正确使用 va_list?

c++ - 计算结构大小而不填充字节的函数

将一维数组中的十进制值转换为具有位值的二维数组,转置二维位数组并再次转换为一维十进制数组

C++ getline() 读取文件行无限循环遍历文件

c - 程序在NetBeans中运行时无法输入数据

c++ - 使用fprintf来存储流