> 文章列表 > 几个C语言容易忽略的问题

几个C语言容易忽略的问题

几个C语言容易忽略的问题

1  取模符号+自增问题

我们不妨尝试写这样的程序

#include<stdio.h>
int main(){int n,t=5;printf("%d\\n",7%(-3));//1printf("%d\\n",(-7)%3);//-1while(--t)printf("%d\\n",t);t=5;while(t--)printf("%d\\n",t);return 0;
}

运行结果如下:

 第一个运行结果为1, 第二个运行结果为-1,说明取模运算的符号取决于被除数

i++代表先判断之后再+1,++i代表+1之后再进行判断

所以第一个循环打印到1就结束了,第二个循环还能够打印0

2  ~scanf问题

~是按位取反

scanf的返回值是输入值的个数

如果没有输入值就是返回-1

-1按位取反结果是0

while(~scanf("%d", &n))就是当没有输入的时候退出循环