C语言中 i++ 和 ++i 有什么区别?
2014-03-25 19:46
183 查看
擦。。C语言忘得一干二净了。。转一个基础的
今天有同学问C语言中for循环里那个 i++ 和 ++i 是否有区别,我告诉他在for循环中是没有区别的,现在具体说一下 i++ 和 ++i 的区别。
我们先用while语句写一下 for(i=1;i<10;i++)
int i=0;
while (i<10){
printf("www.slyar.com");
i++;
}
再用while语句写一下 for(i=1;i<10;++i)
int i=0;
while (i<10){
printf("www.slyar.com");
++i;
}
可以看到,最后i的值都是10,所以在for循环里,i++ 和 ++i 是没有区别的,那么区别在哪里呢?
现在我们再看一段程序:
#include<stdio.h>
int main(){
int i,x;
i=1;
x=1;
x=i++; //这里先让X变成i的值1,然后i加1
printf("%d ",x);
i=1;
x=1;
x=++i; //这里先让i加1,然后让X变成i的值2
printf("%d ",x);
system("pause");
return 0;
}
试着运行一下这段程序,发现结果是 1 2 ,这就是 i++ 和 ++i 的区别了:
i++ :先引用后增加
++i :先增加后引用
具体是什么意思呢?就是
i++ :先在i所在的表达式中使用i的当前值,后让i加1
++i :让i先加1,然后在i所在的表达式中使用i的新值
我想这样说大家就应该明白了。。。
今天有同学问C语言中for循环里那个 i++ 和 ++i 是否有区别,我告诉他在for循环中是没有区别的,现在具体说一下 i++ 和 ++i 的区别。
我们先用while语句写一下 for(i=1;i<10;i++)
int i=0;
while (i<10){
printf("www.slyar.com");
i++;
}
再用while语句写一下 for(i=1;i<10;++i)
int i=0;
while (i<10){
printf("www.slyar.com");
++i;
}
可以看到,最后i的值都是10,所以在for循环里,i++ 和 ++i 是没有区别的,那么区别在哪里呢?
现在我们再看一段程序:
#include<stdio.h>
int main(){
int i,x;
i=1;
x=1;
x=i++; //这里先让X变成i的值1,然后i加1
printf("%d ",x);
i=1;
x=1;
x=++i; //这里先让i加1,然后让X变成i的值2
printf("%d ",x);
system("pause");
return 0;
}
试着运行一下这段程序,发现结果是 1 2 ,这就是 i++ 和 ++i 的区别了:
i++ :先引用后增加
++i :先增加后引用
具体是什么意思呢?就是
i++ :先在i所在的表达式中使用i的当前值,后让i加1
++i :让i先加1,然后在i所在的表达式中使用i的新值
我想这样说大家就应该明白了。。。
相关文章推荐
- C语言学习笔记----伊能C语言学习笔记----指针与地址的区别是什么?
- c语言中定义结构体指针并指向一片内存空间和直接定义一个结构体变量的区别 Node *p=(Node *)malloc(sizeof(Node)); 和 Node p 两个有什么区别??? Node是一
- c语言和c++有什么区别
- c语言,if语句后有大括号和没大括号有什么区别
- C语言的函数调用和oc的消息机制有什么区别
- C语言中exit(0)与exit(1)有什么区别
- C语言异常处理和结构化异常处理有什么区别?
- Java与C++以及C语言各有什么区别
- c语言中转义字符中换行\n回车\r有什么区别
- C语言和C++ C#的区别在什么地方?
- C语言中fgetc、fputc和getc、putc的区别是什么
- c语言中 int *p = NULL 和 *p = NULL 有什么区别
- C语言里,main 函数中 return x和 exit(x) 到底有什么区别 ?
- C语言中的形参和实参的定义是什么?有什么区别?
- C语言的字符串,'\0',NULL,有什么区别
- c语言的 a++ 和 ++a有什么区别
- C语言中exit(0)与exit(1)有什么区别
- C语言中exit(0)与exit(1)有什么区别
- C语言中文本文件与二进制文件的区别是什么
- C语言之strlen和sizeof有什么区别