2011-12-07 45 views
0

在C语言中的循环,如果你有下面的代码:关于数据类型和用逗号

for (size_t x, y = someValue; y > 0; y -= x, ptr1 += x, ptr2 += x) 
{ 
     // do stuff 
} 

将变量y也是size_t类型,或者这将是一个int?

回答

5

int a,b,c; 
size_t x,y,z; 

声明意味着所有A,B,C的是相同的类型(INT),其是x,y和z(为size_t)

for循环内的声明没有什么不同 - 在你的榜样x和y的类型为size_t

然而在你的榜样x未初始化(仅Y设置为somevalue)的 - 除非环路的身体设置到某个地方你会发现y -= x会给你随机未定义的结果。

+3

不是最佳的话,未定义的效果会更好。 –

0

这只是一样,如果你这样做:

size_t x, y = someValue; 

在这种情况下x和y是size_ty = someValue

0

y将同时作为xsize_t,就像它与for循环外同样的表情:

size_t x, y = someValue; 

一个简单的方法来找出是刚刚打印的大小变量为自己,只要sizeof(size_t) != sizeof(int)(如果是,只需将size_t更改为char以使差异明显)。

0

在你的例子中是的; xy都是size_t类型。然而,添加到您的混乱,考虑声明:

int *x, y; 

在这种情况下x是一个指向int,但y只是一个int

0
for (size_t x, y = someValue; y > 0; y -= x, ptr1 += x, ptr2 += x) 
    { 
      // do stuff 
    } 
  1. x和y都是 “为size_t”(通常4个字节在大多数平台)

  2. y被初始化为 “someValue中”。

  3. x然而,是未初始化的。

int main (int argc, char *argv[]) {
size_t x, y = 1;
printf ("x=%d, y=%d, sizeof(x)=%d...\n", x, y, sizeof (x));
return 0; }

X = 4201366,Y = 1,的sizeof(X)= 4 ...

随机