C语言中x++和++x的区别?

作者&投稿:虫浅 (若有异议请与网页底部的电邮联系)
请问C语言中 *x++ (*x)++ ++*x *++x的区别~

先比较++和*(指针)的优先级,++较高。
那么*x++就是取x指向内存的值,然后x+=1;
(*x)++是x指向内存的值,然后其内存的值自增1。
++*x 是x指向内存的值先自增1,在取该值。
*++x 是x先+=1,在取其指向内存的值。
++跟*的优先级一样,两个若一起出现,运算顺序是从右往左(不是常规的从左往右),所以++*x即++(*x)是先取x的值,然后让值自己加1;(地址没变,指针指向的值变了。)
*++x即*(++x),先让x的自己加1,就是x的地址加上这个指针类型的步长(比如说这个指针是int类型,那它的地址+4,),然后再取x的值。(地址变了,但是值没变)

扩展资料:
基本数据类型
void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。(C89标准新增)
char:字符型类型数据,属于整型数据的一种。(K&R时期引入)
int:整型数据,表示范围通常为编译器指定的内存字节长。(K&R时期引入)
float:单精度浮点型数据,属于浮点数据的一种。(K&R时期引入)
double:双精度浮点型数据,属于浮点数据的一种。(K&R时期引入)
Bool:布尔型(C99标准新增)
Complex:复数的基本类型(C99标准新增)
Imaginary:虚数,与复数基本类型相似,没有实部的纯虚数(C99标准新增)
Generic:提供重载的接口入口(C11标准新增)
类型修饰关键字
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。
参考资料来源:C语言-百度百科

++x是x的值先自增1,再计算x的值。
x++是先计算x的值,再将x的值自增1。
举例:
int x=10;
System.out.println(x++);
System.out.println(x);
//第一个输出10, x++先在当前表达式中使用x的值,然后再将x的值自增1,第二个输出11,因为经过上一条指令x自增了1。
int x=10;
System.out.println(++x);
System.out.println(x);
//第一个输出11, ++x 先将x的值自增1,然后再在当前表达式中使用x的值,第二个也是输出11,经过上一条指令x自增了1。
拓展内容:

编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。最早的编程语言是在电脑发明之后产生的,当时是用来控制提花织布机及自动演奏钢琴的动作。在电脑领域已发明了上千不同的编程语言,而且每年仍有新的编程语言诞生。很多编程语言需要用指令方式说明计算的程序,而有些编程语言则属于声明式编程,说明需要的结果,而不说明如何计算。编程语言的描述一般可以分为语法及语义。语法是说明编程语言中,哪些符号或文字的组合方式是正确的,语义则是对于编程的解释。有些语言是用规格文件定义,例如C语言的规格文件也是ISO标准中一部份,2011年后的版本为ISO/IEC 9899:2011,而其他语言(像Perl)有一份主要的编程语言实现文件,视为是参考实现。编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 目前通用的编程语言有两种形式:汇编语言和高级语言。

C语言中x++和++x的区别如下:

x++是在有这个的这个算式中先使用x,再自增1及x=x+1。

++x是先自己加1,再使用。

用 ' ' 包括起来的都是字符,也就是char型的量,注意是量,不是变量,而x则就是变量。
比如你有一个char型的变量x,你想把x的值赋值为x,就这样写 x='x'; 将字符'x'赋值给字符变量x。赋值后变量x的值就是字符x了。

扩展资料

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

参考资料:百度百科-c语言



C语言中x++和++x的区别如下:

1、自增的顺序不同

x++表示x自增1后再参与其它运算。

++x是x参与运算后,x的值再自增1。

2、自增类型不同

x++属于后置自增运算。

++x属于前置自增运算。

扩展资料

前置后置区别的举例

1、a = i++;

相当于 a = i; i++;

2、a = ++i;

相当于 i++; a = i;

3、int c;

int d = 10;   //  测试自增、自减

c = ++d;      // ++d 是先对 d 的值加 1,再使用 d 的值执行该行命令

int e = 10;   // 测试自增、自减  

c = e++;      // e++ 是先使用 e 的值执行该行命令,执行完后再对 e 的值加 1

参考资料来源:百度百科——自增自减运算符



++x是x的值先自增1,再计算x的值。

x++是先计算x的值,再将x的值自增1。

举例:

int x=10;

System.out.println(x++);  

System.out.println(x);

//第一个输出10,  x++先在当前表达式中使用x的值,然后再将x的值自增1,第二个输出11,因为经过上一条指令x自增了1。

int x=10;

System.out.println(++x);

System.out.println(x); 

//第一个输出11,  ++x 先将x的值自增1,然后再在当前表达式中使用x的值,第二个也是输出11,经过上一条指令x自增了1。

拓展内容:

编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。最早的编程语言是在电脑发明之后产生的,当时是用来控制提花织布机及自动演奏钢琴的动作。在电脑领域已发明了上千不同的编程语言,而且每年仍有新的编程语言诞生。很多编程语言需要用指令方式说明计算的程序,而有些编程语言则属于声明式编程,说明需要的结果,而不说明如何计算。编程语言的描述一般可以分为语法及语义。语法是说明编程语言中,哪些符号或文字的组合方式是正确的,语义则是对于编程的解释。有些语言是用规格文件定义,例如C语言的规格文件也是ISO标准中一部份,2011年后的版本为ISO/IEC 9899:2011,而其他语言(像Perl)有一份主要的编程语言实现文件,视为是参考实现。编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 目前通用的编程语言有两种形式:汇编语言和高级语言。



C语言中提供了自增1运算符++和自减1运算符--

而且,这两种运算符,还分为前缀运算和后缀运算

如:

int a=5;

a++;   //后缀运算,表示a=a+1 = 5+1=6

a--;     //后缀运算,表示a=a-1 = 6-1=5

--a;     //前缀运算,表示a=a-1 = 5-1=4

++a;   //前缀运算,表示a=a+1 = 4+1=5

以上单独使用自增1或自减1运算符,前缀运算和后缀运算没有区别,其结果都是完成变量a的自加1或自减1

前缀运算和后缀运算的区别在于:前缀运算,先运算,再使用变量;后缀运算,先使用变量,再运算。如:

int a=5;

printf("a=%d
", ++a );  //前缀运算,先运算a=a+1=5+1=6,再使用变量a,输出结果a=6

a=5; //重新赋值为5

printf("a=%d
", a++ );  //后缀运算,先使用变量a,输出结果a=5,再运算a=a+1=5+1=6

void main(){
int x = 6, y = 5;
printf("%d
",++x+y++); //以下代码表面看有区别,实际都是一样的,先执行++x 然后结果+y,然后y++。 ++的结合性要优于+,所以,解题时,先找++的参与变量,再找其它运算符的参与变量
printf("%d
",++ x+y++); 
printf("%d
",++x +y++);
printf("%d
",++x+ y++);
printf("%d
",++x+y ++);
printf("%d
",++x+y++ );
}


x++是先计算后加1++x是先加1后计算main(){int x = 6, y = 5;printf("%d\n",++x+y++); //x先加1再加上y,之后y再自加1,所以是7+5=12,打印出12,这时x=7,y=6printf("%d\n",++ x+y++); //x先加1再加上y,之后y再自加1,所以是8+6=14,打印出14,这时x=8,y=7printf("%d\n",++x +y++); //x先加1再加上y,之后y再自加1,所以是9+7=16,打印出16,这时x=9,y=8printf("%d\n",++x+ y++); //x先加1再加上y,之后y再自加1,所以是10+8=18,打印出18,这时x=10,y=9printf("%d\n",++x+y ++); //x先加1再加上y,之后y再自加1,所以是11+9=20,打印出12,这时x=11,y=10printf("%d\n",++x+y++ ); //x先加1再加上y,之后y再自加1,所以是12+10=22,打印出14,这时x=12,y=11}


在C语言中! x和! x有什么区别?
!x在c语言中等于一个变量,用于存储值。!在C语言中等于逻辑非运算符,用于取反操作。x在C语言中是一个变量,用于存储值,可以是字符、数字或结构体类型的值。它可以是一个定义的变量,也可以是临时的变量。它的值可以在执行过程中发生变化。!在C语言中是逻辑非运算符,它可以将一个表达式的真假...

c语言中%x和%o是表示什么?
x和%o都是用来输入\/输出整型的格式化字符,可以用在C语言的格式化输入输出函数中。用在scanf函数中,"%X,%O"表示%X对应的第一个变量接收一个十六进制数,再接收一个逗号不赋给任何变量,最后接收一个八进制数赋给%O对应的变量。字母大小写均可。用在printf函数中,"%X,%O"中的%O控制符是错误的,因...

C语言中 x & -x 表示什么意思?
逻辑判断,叹号是非的意思,x是各变量,如果x为零那么!x就是1,相反是0。若X是“0”(为假),则“!x”就不是零(为真),则里面为真,进入if下的大。若X不是“0”(为真),则“!x”就是零(为假),则里面为假,跳过if下的大。

c语言中关于*和&的意思理解
代表指针运算符和乘法运算符;&代表取地址,与运算符,引用符。用于二目运算中的按位(位运算)与运算:单目是只需要一个操作数的意思,比如:a++ a-- *a &a 双目是需要两个操作数的意思,比如:a+b a-b a*b a\/b a%b 三目是需要三个操作数的意思,比如:a=c>b?c:b;例如...

C语言中x和'x'有什么区别
用 ' ' 包括起来的都是字符,也就是char型的量,注意是量,不是变量,而x则就是变量。比如你有一个char型的变量x,你想把x的值赋值为x,就这样写 x='x'; 将字符'x'赋值给字符变量x。赋值后变量x的值就是字符x了。

x是什么意思c语言
在C语言中,x代表的意思是按位取反。1、C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

C语言中x++和++ x有什么区别?
C语言中x++和++x的区别如下:1、自增的顺序不同 x++表示x自增1后再参与其它运算。++x是x参与运算后,x的值再自增1。2、自增类型不同 x++属于后置自增运算。++x属于前置自增运算。

c语言"x"和'x'有什么区别
'x'是字符常量,就是字符'x'"x"是字符串常量,包含字符'x'和'\\0',也就是说有两个字符。

c语言 变量x与&x二者有什么区别与联系
x是变量名,可表示一个存储在这个变量中的值,其值是用户指定的。&x表示的是变量的地址,其值是系统指定的。用户通过变量名使用变量,系统自动将变量名转换为地址,从而把该地址所存储的值反馈给用户使用。变量名、地址、值和类型都是变量的属性。

C语言:‘x'和x有什么区别吗?
x是一个变量名,如 char x;这时声明了一个名字为x的char型变量。'x' 为一个字符。如 char x='x';表示将字符'x'赋值给x的变量。这就是两者的区别,如果需要表示一个字符则必须用''括起来。

长安区19426122682: C语言中x++和++x的区别?请详述C语言中x++和++x的区别,并结合输出结果解释释以下程序(注意空格位置):main(){int x = 6,y = 5;printf("%d\n",++x+y+... -
翟富婴儿:[答案] 对++i和i++的解释: 解释程序: printf("%d\n",++x+y++);++x后x=7与y相加后是12然后y变成6以后的同理

长安区19426122682: C语言中X++和++X有什么区别? -
翟富婴儿: x++ 是先运算后 + 1 x = 5 比如 printf('%d',x++); 输出的结果是:5 ++x 是先+1 后运算 同样x = 5 printf('%d',++x); 输出的结果是:6

长安区19426122682: c++中x++与++x意思一样吗 -
翟富婴儿: 不是,x++是先赋值后加,++x是先加后赋值,明白先后顺序就可以了

长安区19426122682: 语言中x++和++x的区别 -
翟富婴儿: 举个例子:如果定义i=2;执行j=i++;后,j=2;i=3;但是执行j=++i;后,j=i=3;如果不执行赋值操作,单独的i++和++i没区别,都是i=i+1

长安区19426122682: 简述x++和++x俩个表达式的异同点 -
翟富婴儿: 相同点:都是对X进行加1操作 不同点:x++在进行操作时先对x进行操作,再加1.而++x,是先对X进行加1,再进行其他运算.例如[8<x++],先比较8和x的大小,比较结束后再对x加1.而[8<++x]先对x进行加1,再比较8与x+1后的大小.

长安区19426122682: 有一道c语言的程序题关于++x 和x++的 .... -
翟富婴儿: 自增和自减如果在变量前,表示先自增自减再做操作;如果在变量后,就是先做当前操作再增减. if(x++>=5) x此时是4,和5比,if判断为假,然后x++,x得5 if为假,进入else分支,打印x,就是打印5,然后x--,此时x=4,但是已经打印完了.

长安区19426122682: 算术运算符 x++和++x有什么区别 -
翟富婴儿: 单独情况下,是没有什么区别: x=1; ++x; x变成2 x++; x也变成2.但是作为表达式一部分时,就会出现区别: x=1; a = x++; a变成1,先使用x的值,然后改变x的值为2. a=++x; a变成2,先改变x的值为2,然后使用x的值赋值给a.

长安区19426122682: c语言:答案是b,可为什么,x++和++x的区别在哪里 -
翟富婴儿: 会输出6(答案B) x的值是5,判断if(x++>5)时,先取用x的值5,条件不满足.判定后x的值自加,变为6.执行else printf("%d\n",x--);时,也是同样的道理,先取用x的值6并输出,然后再x自减.x++是先取用x的值,用完后再x加1;举例说 x=5; printf("%d\n",x++);会输出5.++x是先x加1后再取用x的值.x=5; printf("%d\n",++x);会输出6.

长安区19426122682: VC++中x++与++x有什么区别? -
翟富婴儿: 示例:x的值为5 a = x++;结果是 a的值为5, x的值为6 a = ++x;结果是 a的值为6, x的值为6 就是说x++是先把x的值赋给a,然后x自增1; ++x是x先自增1,然后赋值给a

长安区19426122682: 我想知道做C++题目的时候,++X和X++具体细节上的区别,C++高手门请进
翟富婴儿: ++x,x++,前自增,后自增,其实要理解很简单,++x就看着是先把x加1之后再放入这条语句,x++就看着这条语句完了再加1.其实呢,在++x和x++都能用的情况下,最好用++x,因为,x++,也加了,它还要保存x原来值的副本,因为x原来的值还要参加运算,完了之后还要释放,所以效率没有++x高,虽然差距甚微,但大型的数据类型还是可以考虑下的. C++,为什么要叫C++不叫++C其实也就这个原因,C++还保留以前C的东西,而++C呢,就不保留了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网