c#和c ++中反向循环的奇怪行为

bri*_*ore 5 c# c++ loops for-loop

我只是编写了一个简单的反向循环:

for (unsigned int i = 50; i >= 0; i--)
    printf("i = %d\n", i);
Run Code Online (Sandbox Code Playgroud)

但它并没有像预期的那样停在0,而是下降到负值,为什么呢?
请参阅此ideone示例:http://ideone.com/kkixx8

(我用c#和c ++测试过)

DrC*_*DrC 13

您将int声明为unsigned.它总是> = 0.您看到负值的唯一原因是您的printf调用将其解释为signed(%d)而不是unsigned(%ud).