关于C编程的非常基本的查询 - 显示int值

时间:2011-09-23 15:56:45

标签: c int

当我编译这个小程序而不是显示“num1:7num2: 2”时, 它会显示“num1:-1218690218num2:-1217453276”。我想我没有指定程序应该显示什么,所以它只是给我int范围。 对不起。

#include <stdio.h>
main() {
     int num1 = 7, num2 = 2;                
     printf("num1:%d , num2:%d\n"), num1, num2;
}
编辑:非常感谢你!练习的目的是纠正语法错误,但每当我编译它时,我都没有得到任何警告。这个括号很容易错过。

10 个答案:

答案 0 :(得分:7)

您已在 num1num2之前加上右括号,因此它们不会传递给printf。你需要改变这个:

 printf("num1:%d , num2:%d\n"), num1, num2;

到此:

 printf("num1:%d , num2:%d\n", num1, num2);

是的,括号是唯一的变化,但这是至关重要的。

答案 1 :(得分:5)

您正在使用逗号运算符而不是函数调用的参数。 printf将输出垃圾值,但它也可能已崩溃。


所以它应该是:

printf("num1:%d , num2:%d\n", num1, num2);

注意) - 字符。

答案 2 :(得分:4)

您希望在括号内移动num1num2

printf("num1:%d , num2:%d\n", num1, num2);

原因是num1num2printf函数调用的一部分 - 没有它们,printf使用来自其他地方的随机数据,给你那些大的负值。

答案 3 :(得分:4)

试试这个:

#include <stdio.h>
main() {
     int num1 = 7, num2 = 2;                
     printf("num1:%d , num2:%d\n", num1, num2);
     //                                      ^ num1 and num2 go inside the parentheses
}

答案 4 :(得分:3)

如果这是实际代码,则通过移动paren来修复它。

printf("num1:%d , num2:%d\n", num1, num2);

答案 5 :(得分:2)

我认为你的程序应该更像这样

int main(){
int num1 = 7, num2 = 2;
printf("num1 : %d num2 : %d\n",num1,num2);
}

int main(){ int num1 = 7, num2 = 2; printf("num1 : %d num2 : %d\n",num1,num2); }

答案 6 :(得分:1)

使用编译器检查语法类似于pellesc for windows

#include <stdio.h>
int main(){
int num1 = 7, num2 = 2;
printf("num1:%d , num2:%d\n", num1, num2);
return 0;
}

你的printf格式错误,c编辑会告诉你

答案 7 :(得分:1)

正在发生的事情是printf正在查看与程序正在处理的内存(堆栈)相邻的内存中的数字。当printf碰巧看到它们时,这些数字是出于其他原因,因此它会打印它们而不是num1num2。正如其他人所指出的,你的论点(num1num2)需要在括号内,以便printf可以使用它们。

答案 8 :(得分:1)

#include <stdio.h>  
int main()
  {  
    //int num1 = 7, num2 = 2; this is static intialisation
    //u want it as dynamic u have to use 
    int num1,num2;
    scanf("%d%d",&num1,&num2); //get the values from user 
    printf("num1:%d , num2:%d\n", num1, num2); 
    return 0; 
   } 

答案 9 :(得分:0)

您想要的是“使用此格式字符串调用printf,使用num1作为替换的第一个值,使用num2作为替换的第二个值;忽略值printf返回“。 (printf通常返回打印的字节数;实际打印是副作用。)

您所写的内容是“使用此格式字符串调用printf;忽略它返回的值,并评估num1;忽略该值并评估num2;忽略该值”。这是未定义的行为:printf没有给出任何替换值,并且通常会盲目地在内存中找到它期望接收的值(有时会导致崩溃) - 但语言标准说此时,您的程序可以执行字面上的任何操作。是的,这是一种非常危险的语言:)

要将值传递给printf,它们必须位于括号内,如其他答案所示。