这个语法在c ++

时间:2017-05-06 01:24:53

标签: c++

我在C ++源代码中看到了类似下面的代码:

size_t s1, s2 = sizeof(int), s3;

这是什么意思? 抱歉天真的问题。

2 个答案:

答案 0 :(得分:7)

它是多重声明(可以说是糟糕的风格)等同于:

size_t s1;
size_t s2 = sizeof(int);
size_t s3;

答案 1 :(得分:0)

c ++中的逗号可以作为分隔符运算符工作。

作为分隔符,它可以是:

将声明应用于以下所有表达式:

type a, b = 5, *c;

相当于:

type a;
type b = 5;
type *c;

或分隔应该组合在一起的元素:

int ray [] = {1,2,3,4};

作为运算符,逗号是一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回该值(并键入)。

int a=1, b=2, c=3;
int i = (a += 2, c+1, a + b); // a = 3,  a + b = 5 --> i = 5
//Here, c + 1 is evaluated to 3+1 = 4, but the result remains unused

此处,每个操作数连续评估,最终操作(a + b)变为i的值

顺便说一句sizeof(x)是一个返回变量,对象x或类型(在这种情况下为int)的字节大小的函数。

应该注意的是,当sizeof(ptr)使用指针参数时,它只返回指针的大小而不是目标的大小。