倒悬山下 发表于 2022-1-4 13:12:39

c语言搞不懂

1、num = num * 10 + (ch - '0')这个式子是怎么想出来的啊,完全没有思路;
2、num = num * 10 + (ch - '0')这个式子中ch为什么要减0;
3、else { if(num)}这是什么意思。

大马强 发表于 2022-1-4 13:12:40

打个比方你输入的是 123
【123】 不是整型,他们对应的ascii编码分别为49 50 51
而这个代码是要将他们转换为整型看,也就是 123 一百二十三
字符'0'对应的ascii 是 48,而他们相减就是用对应的ascii相减。所以三轮循环分别是
10 * 0 + (49 - 48) = 1
10 * 1 + (50 - 48)= 12
10 * 12 + (51 - 48 )=123
https://static01.imgkr.com/temp/e19506d2acd141f6bb3d08d7285d917c.png

阿萨德按时 发表于 2022-1-4 13:37:45

3、else { if(num)}这是什么意思。
这里就是如果输入的不是0-9的话就会直接跳出从头开始

傻眼貓咪 发表于 2022-1-4 13:55:58

你的编译器的外观主题很美,下面的!= 呈现很帅。
建议:你的 tab 需要设定一下,改成 4 个空格,不要用 8 个空格。

is1991 发表于 2022-1-4 19:09:56

想知道小甲鱼最近在做啥?

倒悬山下 发表于 2022-1-5 12:29:30

大马强 发表于 2022-1-4 13:12
打个比方你输入的是 123
【123】 不是整型,他们对应的ascii编码分别为49 50 51
而这个代码是要将他们转 ...

谢谢
页: [1]
查看完整版本: c语言搞不懂