有,23指的是十进制,023指的是8进制【0开头】;
int a=23,b=023
CString p
p.Format("23=>%d,023=>%d",a,b)
AfxMessageBox(p)
看图
首先,初始化int变量x值为23。然后,进入do-while循环,首先执行一次循环体中的语句:
printf("%d", x--)
因为自减运算符在变量x后面,所以x的值是在参与一次执行后减少,这里是在被以%d带符号10进制整数形式输出之后减少。所以输出的结果是23原来的值,输出之后,x的值立即自减1变为22。
随后执行while的条件语句:
while (!x)
这句代码表示当!x不等于0,即当x等于0时,进行下一次迭代,否则结束这个do-while循环。因为这里x的值是22,所以!x之后是0,所以do-while循环结束。
main函数结束。
程序实现的是按位数从低到高依次输出各位数,如输入23,输出32,输入1857,输出7581;举例输入1857,do循环第一次先执行循环体c=num%10,对10取余,c=7,输出7;
然后执行num/=10,即num=num/10,即num=185>0,继续取余,得到c=5输出5;
再次执行num/=10,即num=18>0,继续得到c=8;
继续num/=10后num=1,取余得到c=1;
然后此时num=1再进行num/10后得到num=0,不符合>0则退出循环,最终输出7581。