为什么我的printf什么都不打印

img

img


求带身指导为什么我的printf什么都不打印,运行这个程序啥也没有

开始内循环之前, s 要初始化为 0,否则影响后续的判断

img

把s=0放到第一层循环内

修改如下,供参考:

#include <stdio.h>
int main()
{
    int s = 0;
    /**************Begin*****************/
    for (int i = 2; i < 1000; i++) {
        s = 0; // 修改
        for (int j = 1; j < i; j++) {
            if (i % j == 0) s = s + j;
        }
        if (s == i)  printf("%d ", s);
    }
    /***************End****************/
}

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7555788
  • 这篇博客也不错, 你可以看下深入理解printf函数的实现
  • 除此之外, 这篇博客: printf 详解 - 你所不知道的printf用法中的 ②直接输出字符串变量 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 输出格式 : printf(str);

    在这样输出之前我们要先做一件事情 char str[] = "hello world"; 我们需要先创建一个存储字符串的数组。这样创建的字符串"hello world!'\0'" 也是有'\0'在里面的,只是被隐藏了。在这里str所指向的是首字符h的地址,它也是通过str所指向的h的地址向后进行打印,直到遇到'\0'停止,这样的方法更为简单快捷,但我依然推荐后面要讲到的标准的输出格式。

  • 您还可以看一下 王利涛老师的嵌入式软件调试专题2:printf函数打印高阶技巧课程中的 输出重定向小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    答案:

    在Visual Studio中,printf语句没有输出任何内容的原因可能有很多种。我给出一些可能性和相应的解决方案:

    1. printf语句被注释掉了或者没有被执行到。可以在代码中加上一些调试信息,例如在printf语句前后加上一些特定的输出,或者在程序执行过程中打断点进行调试,确定是否执行了printf语句。

    2. printf语句的格式化字符串中没有格式符或格式符写错了。格式化字符串中应该包含占位符,并且占位符的类型应该和后面提供的实参类型相匹配。可以检查一下printf语句的格式化字符串是否正确。

    3. printf语句的实参类型不正确。实参的类型应该和对应格式符的类型相匹配。例如,如果格式化字符串中有%d,那么实参应该是int型变量。可以检查一下printf语句的实参是否正确,并适当地进行类型转换。

    4. printf语句输出的内容被重定向到了其他地方。例如,输出被重定向到了文件中或者被缓存了起来。可以检查一下程序中是否有其他重定向输出的语句,或者尝试刷新输出缓冲区。

    5. 程序中存在其他不可预期的错误或者bug,导致printf语句无法输出结果。可以先检查一下程序的其他部分是否有问题,如果有就要先解决那些问题。

    总之,要想确定printf语句没有输出内容的具体原因,需要对程序进行全面的调试和排查。具体的解决方案要根据具体情况进行判断和处理。