为什么if语句要反复的判断

img


19行if语句的判断中,如果字符串第一个字符是负号,那么flag变为-1。为什么程序第21行依然要p++反复的判断。即使判断的话,flag依然是-1,字符串中有其他的负号也没办法负负相乘得正数。还是说此时的if语句已经结束,P++是为了下面的while做准备,跳过了第1个字符的负号,是纯字符串进行while语句的判断。

img


1.19-22行这里只是对字符串首位进行了校验,如果是负数,则把标志位置为负,并把指针位移到下一位;

img


2.23-26行是对字符串每一位转换成数字(字符转为数字需要对照ascii表),然后通过*10转化成满足条件的数;s是保存当前已读取数字转换的数,然后迭代读取字符串中的每一个字符;

你说的第二点是对的。这是一个if语句,不是while语句,所以只是判断第一个字符是否为符号,如果是,那么p就指向符号后面的字符,跳过负号

不要看到p++就联想到循环。for、while这些才是循环。

此时的if语句已经结束,P++是为了下面的while做准备,这是正确的理解。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^