关于带逗号的for循环的数据类型

use*_*516 0 c for-loop

在C中,如果您有以下代码:

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

变量y也可以是size_t类型还是int?

Sor*_*ren 5

宣言

int a,b,c;
size_t x,y,z;
Run Code Online (Sandbox Code Playgroud)

表示所有a,b,c与x,y,z(size_t)的类型(int)相同

for循环中的声明没有区别 - 在你的例子中,x和y都是size_t类型

但是在你的例子x中没有初始化(只有y被设置为somevalue) - 除非循环体设置为某种东西,你会发现它y -= x会给你随机的未定义结果.

  • 随机不是最好的词,undefined会更好. (3认同)