if(num >= 0 && num <=999999999){
while(num != 0){
count++;
num/=10;
}
外层循环条件是“值大于等于0小于等于99999999”,内层循环条件是“值不等于0”. count每循环一次自增“1”。如果num值为100,num/=10结果是10,count自增100次,count值不是应该是100吗?
你可以这样想定义num是一个整型常量,那他num/10就一直除的它小于零为止,在这个循环中一直循环count次,
因为count++ "自增循环”一直加一次,3位数除一次是两位 再除一次是一位 再除一次是小数 不再是整数 就结束了循环,也就是3位数执行了三次操作,也就得出3位数的结果了
num/10,就是看这个数能除以10多少次,多少次就是多少位数。比如999=9*10(2)+9*10(1)+9*10(0),如果学过二进制位移计算的话 这个题就更容易理解了