发布网友
共2个回答
热心网友
while(b[i++]=t%2,t=t/2);
小括号里是用逗号分隔的 “逗号表达式”。
一个 表达式 是 b[i++]=t%2,另一个是 t=t/2
逗号表达式 的 值 等于 最右一个表达式的值,即 t=t/2。
while 是循环语句,循环体是空语句,循环条件是 (t=t/2)不等于0,换一句话说, if ((t=t/2)==0) 时 break; 循环结束。
i++ 是后缀加加,后缀加加 在表达式里 用 i, 出了表达式 自增1,i=i+1;
t%2 是整除取余数运算,即,t 是偶数 得 0,t 是奇数 得 1。
t=t/2; 是整除2取商的 赋值运算。
b[] 里存放2进制结果。b[0]是最右的一位。
-----
while(b[i++]=t%2,t=t/2); 可写成:
while(1){
b[i]=t%2; t=t/2;
if (t==0) break;
i++;
}
热心网友
C语言中所有符号均为半角形式,看你的程序输出,%应该是全角形式的符号,让编译器误以为它只是一个字符,尽量在全英文条件下输入,尽量不要使用第三方输入法中单独提取出的标点符号。
另外,程序本身的话,让a类型为double没有必要,a可以为int,在执行a/100的指令后,仍然会返回百位数,因为int类型的数字会自动将小数点后的数去除。追问要求是0-999不一定是整数,全角形式和半角形式什么区别
追答如果不一定是整数的话,确实需要double。
全角就是字母和数字等与汉字占等宽位置的字。半角就是ASCII方式的字符,在没有汉字输入法起作用的时候输入的字母数字和字符都是半角的,编译器能处理的指令也都是半角字符。