自动变量和函数调用的初始化

时间:2014-07-16 12:04:53

标签: int

实际上在其中一个书面测试中,我被问到这些问题,而且在我尝试使用我的vc ++编译器之后我无法回答,所以任何机构都可以帮助解决这些问题

1)
int main()// case ::1
{
   int variable=10,20;// here in assigning 20 compiler was giving error
}

int main() // case ::2
{
   int variable ;
    variable=10,20;
    printf("%d \n",variable);// without any error it prints value 10

}

2)

int main()
{
   function(12,(13,(14,15)));


}

void function(int varible1,int variable2 )
{

  printf("%d %d \n",variable1, variable2);// prints 12 and 15

}

怎么来的??? 所以任何人都可以告诉我这些背后的内部过程...... 谢谢!!

1 个答案:

答案 0 :(得分:0)

包含逗号的表达式的结果是最后一个子表达式的值。所有子表达式都会被执行。

int x;
cout << (x = 30, "Hello!"); // Outputs "Hello!"
cout << x; // Outputs 30

在表达式

variable=10,20;

两者

variable=10;

20;

执行(第一个将10分配给变量并计算为10,后者只执行任何操作,但计算结果为20)

int main()
{
    function(12,(13,(14,15)));
}

使用参数12和(13,(14,15))调用函数,其计算结果为12和(14,15),反过来,计算结果为12和15。

您给出的第一个示例是错误地使用快捷方式来定义两个整数:

int x = 10, y; // Defines two integers, x and y

因为在您的示例中,20不是编译器抱怨的变量的有效名称。