【发布时间】:2013-05-06 04:42:42
【问题描述】:
我有两个问题。
第一季度: 以下程序会输出什么(在 32 位 little-endian 机器上):
int main()
{
long long a = 0x1, b = 0x2, c = 0x3;
printf("a = %d, b = %d, c = %d.\n", a, b, c);
return 0;
}
为什么?
第二季度:
为什么a、b和c的输出不一样?
void func(int a, int b, int c)
{
printf("a = %d, b = %d, c = %d.\n", a, b, c);
}
int main()
{
long long a = 0x1, b = 0x2, c = 0x3;
printf("a = %d, b = %d, c = %d.\n", a, b, c);
func(a, b, c);
return 0;
}
【问题讨论】:
-
如果将第一个和第三个设置为默认值,当我给它两个参数时,你希望它做什么?至于其他一切,只是未定义的行为。
-
@chris 但是为什么我不能只将第一个参数设置为默认值?
-
阅读函数重载。你可以用它做你想做的事。
-
你可以有不同的函数,名字相同但输入不同。因此,如果在您的第一个函数中,c 是常量,请将其从输入列表中删除并将 c = 1 放在函数的第一行。
-
如果你有三个问题,你为什么不发三个帖子?每个帖子一个问题。
标签: c++ c parameter-passing optional-parameters