我一直在学习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.");
}
答案 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);
因此,你错过了输出语句中的变量编码。