C语言中的 i++ 和 ++i 的区别

(1) i ++:

int i = 0;

while (i < 10) {
i ++;
}

(2) ++i:
int i = 0;
while (i < 10) {
++ i;
}
(1)与(2),经过运算后,i的值都是10。在while和for循环中的 ++i 和 i++ 是没有区别的。

现在我们来看一段程序

#include <studio.h>
int main() {
int i,x;
i = 1;
x = 1;
x = i ++; //先让x变成i的值1,再让i加1
print("%d", x); //x=1
print("%d", i); /i=2

i = 1;
x = 1;
x = ++i; //先让i加1, 再让x变成i的值2
print("%d", x); //x=2
print("%d", i); //i=2
}

i++和++i的区别就是:

i++ :先引用,后增加
++i :先增加,后引用

换句话就是:

i++ : 先在i所在的表达式中使用i的当前值,再让i加1
++i : 先让i加1,再在i所在的表达式中使用i的新值

时间: 2024-10-27 08:37:59

C语言中的 i++ 和 ++i 的区别的相关文章

C语言中的声明与定义的区别

1.对于下面的声明语句 int a; 如果其位置出现在所有的函数体之外,那么它就被称为外部对象a的定义.这个语句说明了a是一个外部整型变量,同时为a分配了存储空间.因为外部对象a并没有被明确指定任何初始值,所以它的初始值默认为0(某些系统中的连接器对以其他语言编写的程序并不保证这一点,C编译器有责任以适当方式通知连接器,确保未指定初始值的外部变量初始化为0). 2.又如下面的声明语句: int a = 7; 在定义a的同时也为a明确指定了初始值.这个语句不仅为a分配内存,而且也说明了在该内存中应

Django与SQL语言中——NULL与空字符串的区别

SQL有指定空值的独特方式,它把空值叫做NULL. Null在数据库中表示 不知道的数据,主要有3种意思: 1)知道数据存在,但不知道具体值. 2)不知道数据是否存在. 3)数据不存在. 在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样.这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串. 这会引起不必要的歧义或疑惑. 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致?

C语言中字符型和字符串型的区别?

C语言中只有字符型类型,没有字符串型类型.字符类型用一个带符号的8位二进制编码表示,其性质与int相同,只是只有一个字节.表示字符的ASCII编码使用其中的0~127,所以要明白字符类型(char)其实是一个一字节整型,并不只用来表示字符.由于C中没有字符串类型,所以在处理字符串时是利用字符型数组来实现的,在字符型数组中一个接一个地存储字符的ASCII编码,并在最后一个字符后加一个'\0'表示这一串字符结束了,就形成所谓“字符串”.

Jvm(29),理解升级----C语言中的堆和栈的区别 (可以借鉴)

在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到.但对于很多的初学着来说,堆栈是一个很模糊的概念. 堆栈:一种数据结构.一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈.我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教,这对于大家学习会有很大帮助. 一.数据结构中的栈和堆 首先在数据结构上要知道堆栈,尽管我们这么称

C语言中字符串和字符数组的区别

字符数组: char a[2]={'a','b','c'}; char a[]={'a','b','c'}; 字符串: char a[3]={"abc"}; char a[3]="abc";   //此处可以省略大括号 char a[]="abc";     // 与char a[3]={'a','b','c','\0'};    相同 红字表明的地方为什么要变成3呢,因为字符串赋值给数组后,在最后会默认增加一个字符"\0",

C语言中使用指针与数组的区别

在c语言中,指针和数组名都表示地址,但两者却有很大的不同之处,对于初学者来说一定要弄清楚两者的区别. 首先,我举个简单的例子: char *p1="hello!";  //定义字符型指针p1,并将指针p1指向字符串"hello!"的首地址. char s[10]="hello!";  //定义数组s,并将其初始化赋值. 然而,如果char s[10]; s="hello!";这样就会报错,为什么呢?原因很简单,因为数组名是常量

从头开始-04.C语言中流程控制

分支结构: if语句:当条表达式满足的时候就执行if后面大括号中语句 三种格式: if,if else , if else if else 特点:1.只有一个代码块会被执行 2.若有else那么必有一个代码会被执行 3.一个if语句中只能以if开头,最多只能有一个else,可以有任意个else if switch(表达式){ case 常量: ... break; case 常量1: ... break; default: ... break; } : 使用场景:当一个变量只有几个固定的取值的时

sqlite学习笔记8:C语言中使用sqlite之创建表

前面已经说了如何打开和关闭数据库,这次要说得是如何执行SQL语句,来创建一张表. 要用的的函数: sqlite3_exec(sqlite3* db, const char *sql, sqlite_callback callback, void *data, char **errmsg) 参数: db:已经打开的数据库实例 sql:SQL语句,是一个字符串 callback:是一个回调函数 data:做为回调函数的第一个参数 errmsg:用于带回错误信息 该回调函数有两种返回值类型. 1.返回

C语言中内存的管理

一  Handler作用和概念 包含线程队列和消息队列,实现异步的消息处理机制,跟web开发的ajax有异曲同工之妙. 1.运行在某个线程上,共享线程的消息队列: 2.接收消息.调度消息,派发消息和处理消息: 3.实现消息的异步处理: Handler能够让你发送和处理消息,以及Runnable对象:每个Handler对象对应一个Thread和Thread的消息队列.当你创建一个Handler时,它就和Thread的消息队列绑定在一起,然后就可以传递消息和runnable对象到消息队列中,执行消息