printf()的%d输出大整数。

时间:2016-11-29 01:50:30

标签: c printf

我一直在学习C编程,似乎偶然发现%d给了我大整数值,比如11146096。

#include<stdio.h>

void main() {
    const int age = 23;
    int brotherage; 
    brotherage = age*2;
    printf("I am %d years old, and my uncle is %d years old.");
}

4 个答案:

答案 0 :(得分:3)

您的printf声明有误。您需要在%d's函数中指定相应printf的变量:

printf("I am %d years old, and my uncle is %d years old.", age, brotherage);

在您的案例中打印了一个大数字,因为printf函数将假定您已为%d's提供了参数并在堆栈中查找它。它会拾取任何东西,因此可以返回垃圾值。

答案 1 :(得分:1)

此调用具有未定义的行为

printf("I am %d years old, and my uncle is %d years old.");

因为参数少于格式说明符的数量。

我认为你的意思是

printf("I am %d years old, and my uncle is %d years old.\n", age, brotherage);

考虑到根据C标准,不带参数的函数main应声明为

int main( void )

答案 2 :(得分:0)

您错误地使用了printf clouse,您已为格式字符添加输出变量。变化

printf("I am %d years old, and my uncle is %d years old.");

printf("I am %d years old, and my uncle is %d years old.", age, brotherage);

答案 3 :(得分:-1)

你在格式化的输出语句中犯了一个错误。 您的不正当声明:

printf("I am %d years old, and my uncle is %d years old.");

CORRECT声明:

printf("I am %d years old, and my uncle is %d years old.",age,brotherage);

因此,你错过了输出语句中的变量编码。