C语言中的分段错误

3
void main() {
    int num;
    num = 1;
    num++;
    num = num + 9;
    printf('%u',num);
}

这个有什么问题吗?它显示出了分段错误。用C语言编写的。

2
使用int main(int argc, char **argv)函数! - Benoit
虽然在这种情况下很明显错误出现在哪一行,但请在以后的帖子中明确包含此信息 - 这将使每个人的生活更轻松(包括您自己)。 - Péter Török
查看编译器的输出是个好主意。我相信它已经警告你 printf() 的问题了。 - Mackie Messer
4个回答

8

'%u' 应该改为双引号 "%u"。C语言不同于SQL,'%u' 被认为是一个多字符字面量

正如Erik所说,在您的情况下使用 %d 更好。


@Ian - 如果这解决了你的问题,你应该将此答案标记为正确的。 - Varun Madiath

3

printf("%d") - printf函数需要一个C字符串而不是一个字符。%d是正确的整数格式说明符。


3

'%u'(一个多字符常量)应该是"%u"(一个char数组)。字符常量被误解为指向随机内存的指针。


0
请注意,如果您将错误的类型(int而不是const char *)作为printf的第一个参数传递,您将会收到一个错误提示,但是您忘记了#include <stdio.h>或自己定义printf的原型。由于printf是一种可变参数函数,因此这也会导致未定义行为。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接