C语言中,a b与b a有什么区别么

2020-11-26 08:33:34 字数 5807 阅读 9860

1楼:匿名用户

没区别,==是恒等于,不存在赋值问题,单纯比较,怎么写都行,但是=号就不一样了,是右边赋值给左边

2楼:育知同创教育

写法几乎没有什么区别。前后顺序不影响的。

3楼:匿名用户

双等号 是比较运算符, 没有什么区别

4楼:幻世封神

没什么区别,看个人习惯了

请采纳吧

5楼:研凌工控电脑

无区别,这和只有一个=号不同

在c语言中a==b==c与a==b,b==c有区别吗?

6楼:匿名用户

这个太有区别了!

a==b==c 是一个关系表达式,由于运算符"=="具有左结合性,故其运算顺序是:

((a==b) ==c )

若a=5,b=5,c=5,则a==b的值为1,而1==c的结果为0a==b,b==c是分别判断a和b以及b和c关系运算补充,楼上说a==b==c是先执行b==c是错误的,因为c语言中只有赋值运算符和单目运算符具有右结合性,故运算对象b必然先于左侧的"=="结合。

再次补充:这不是赋值的问题,没有赋值运算符,而是关系运算

7楼:匿名用户

||在c语言中a==b==c与a==b,b==c有区别的

a==b==c意思是将a和b的值等于c,而a==b,b==c而这一句是a的等于b,b的值等于c.比如你是在对a,b进行判断:if(a==b==c)与if(a==b||b==c)严格说是不太一样的

8楼:匿名用户

有区别,前者执行b==c,a==b,正好与后者相反,顺序不同。 结果不一定相同,和计算机的精度有关!

9楼:匿名用户

有区别,前者先执行b==c,后执行a==b,正好与后者相反。顺序不同,但结果相同。

10楼:安徽新华电脑

赋值表达式最后会返回最后被赋值的那个值。

11楼:墙头r等红杏

涉及到一个谁先把值赋给谁的区别。其他没啥区别。

c语言中(a>b)?a:b和(a

12楼:學雅思

一、表达意思不同

1、(a>b)?a:b:如果a大于b,则取a,否则取b。

2、(a

二、逻辑顺序不同

1、(a>b)?a:b:内存逻辑中先执行大于的判断,之后执行下一步。

三、执行顺序不同

1、(a>b)?a:b:在a跟b中取最大值。

13楼:幻翼高达

c语言中,“(a>b)?a:b”和“(a”的区别是当a与b相等时,前者的值是b,后者的值的是a。

条件运算符的表达式为“表达式1?表达式2:表达式3”,先求解表达式1,若其值为真(非0)则将表达式2的值作为整个表达式的取值,否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。

例如:1、max=(a>b)?a:b

就是将a和b二者中较大的一个赋给max。

2、min=(a就是将a和b二者中较小的一个赋给min。

14楼:鱼与咸鱼

1、本质区别

双引号里面的是字符串, 而单引号里面的代表字符。

2、输出区别

str = “a”输出的就是a这个字母;

str = ‘a’输出的测试65

3、底层区别

用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。

15楼:go学龙

第一个若a>b为真即执行a,为假及执行b

第二个若a

16楼:匿名用户

这个和()没什么关系,我详细的讲一下,你一定要看完啊:)注意理解a++和++a的区别:

a++: 先将a的值代入表达式,在表达式运算完毕后,再将a进行++处理

++a: 先将a进行++处理,再将a的值代入表达式注意对于a++这里有一个“在表达式运算完毕后,再将a进行++处理”,b=(a++); 这是一个赋值表达式,

所以先将a的值代入表达式,必须等到赋值表达式运算完毕后,再将a进行++处理,

也就是说必须等到给b赋值完毕后,才将a进行++处理所以b=3,a=4

17楼:匿名用户

1.a=b>c相当于a=(b>c)是一个赋值表达式,把(b>c)的值赋给a,

(1)如果b>c为真,则把1赋值给a,

(2)如果b>c为假,则把0赋值给a。

(3)运行完该表达式,仅a的值改变,b、c的值不变。

2.a==b>c也相当于a==(b>c)是一个符合表达式,先判断(b>c)的真假,

(1)若为真,a为1则该表达式为真,即该符合表达式的值为1。

(2)若为真,a不为1则该表达式为假,即该符合表达式的值为0。

(3)若为假,a为0则该表达式为真,即该符合表达式的值为1。

(4)若为假,a不为0则该表达式为假,即该符合表达式的值为0。

(5)运行完该表达式,a、b、c的值都不发生改变。

18楼:周肆爻

定界符不同,字符常量用的是单直撇,字符串常量则用双引号长度也不同,字符常量只能有一个字符,也就是说字符常量长度为一,而字符串常量可为0,也可为任意数。即使字符串常量字符数量为一,长度也不是一。

例如,字符串常量"h"(这手机没双引号)

则长度为2,字符就是h \0

19楼:新来的文盲

a比a少一维,我具体给你解释下。

几个元素可以组成数组,而几个一维数组可以组成二维数组,如此一直增加维数。

比如说a[0]=2,a[1]=1,a[2]=3,组成一个一维数组,这就是a.但是,你要注意,a不是直接把这些东西都存着的,a只存首地址。

假设定义了一个二维数组a[3][3].这时候a[0],a[1],a[2]就不再是元素了,而代表的是一个有三个元素的一位数组,而此时的a就是一个二维数组。如果感觉这个有点困难没关系,等学习了指针什么的久很好理解这个了。

再说说你给的程序,你是不是在疑问为什么gets()直接给str1 就可以了?还有那个输出函数,为啥只用给str1就可以?

这得给存储方式有关,字符串就是字符的二维数组,gets()需要输入字符串的首地址,这个还算好理解,因为你应该学过了scanf()了,二者差不多,关键是为什么输出函数直接就写了str1呢?printf()之前你学的一般都是(printf("%d",a[1]));这种类型的。这里为啥要填一个地址参数呢?

这是因为你前面是%s s代表字符串,字符串本身就是二维的,因此,你当然不能只给他一个单独的元素了,那么,你给了首地址他如何知道你这个字符串是啥呢?因为字符串都是顺序存储的,更重要的是字符串在结尾处有个标志“/0”,因此,你只要给力他首地址,他就知道从**开始,从**结束了。

纯手打,望采纳。

20楼:

&a取址 *p取值这没有什么可说的。

int *p; int a;

a的地址1000h,即&a == 1000h. p是指针,它本身也有存放它的地址,设1200h,

即&p == 1200h(win32下,指针本身长度32位即4字节,可通过sizeof(p)得到). 这样就是用到两块内存了。

p = &a; 即p == 1000h. 这是一个地址值,本质是值,即可以加减等操作的。但是加减后的p, *p可能就无法访问了,因为它已经不指向a了,比如p == 1004h了,如果这是在某一函数里操作的,而1004h地址并不本程序的地址空间里,取*p时那就非法访问,要崩溃的;但如果1004h地址正好是这函数里另外一个int b;变量的地址,那*p的值就是b了。

*p表示取p指向地址的值,也就是1000h上的值; a = 1; 说明1000h上的值为1,所以*p == 1;a, 它本身只是一个符号而已,这个符号代表了地址1000h起的int型长(4字节)的一个内存块, a=1,就是内存块放一个值1, 如果有汇编的思想,能更形象点:[1000h] = 1,根本不需要a,b,c...之类的字符来表示,直接对内存地址进行存取。

21楼:星呈幻

a和p是变量,&a和*p是表达式,1和0x1000是常量a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)

在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1和0x1000也有空间,在程序的常量段存放。

*p按照stanley lippman的著作《c++ primer》中的描述,p是指针变量,*是解引用操作符,*p是一个表达式,含义是“对指针变量p进行解引用操作”,这与表达式&a的含义“取整形变量a的地址”是正好是相反的操作。

22楼:匿名用户

首先我们明确a为一个变量 假设定义是 int a;

再明确p是一个指针,假设定义为 int* p;

当我们定义了一个a是系统会分派一个内存给你用来存放他的数值,如 执行了a=10;后 这个内存就存放了一个10的数字,当我们要用到它表示的10时,直接用a替代就可以了。

现在我们再用 p=&a "&"叫取地址符,他是一个运算符。 "&a"就表示指向a有就是上面的那个存着10的内存的地址。如果我们用到a的时候,很明显,我们不能直接用p了,因为他是一个地址而不是我们需要的10这个数,那怎么办呢?

我们这里就可用"*"这个符号,他表示取这个指针所指内存上的数据,即 *p就表示a了用法什么的都一样。

23楼:徐章林

第一个,先判断b>c是否成立,如果成立,把1赋给a,否则把0赋给a

第二个,先判断b>c是否成立,如果成立,用1和a比较,如果a=1,则整个表达式为1,否则整个表达式为0。

24楼:孔明灯

如果a,b都是整数。a/b是取商,a%b是取余数。

如果a,b为浮点float,double。a/b是计算结果。

25楼:自然而然

基本没区别,都是并列的关系。

但是“a或者b”中,a似乎有些优先的感觉,而“或者a或者b”完全是平等的并列关系。

26楼:匿名用户

在 c 语言中,

1.单引号是字符的意思:‘a’,a就是一个字符;

2.双引号就是 字符串的意思:”abd“就是一个字符串。

27楼:菊隐逸者也

a的话就是一个变量,你可以给它赋值,比如,int a=30;double a=60.78,char a=’c‘等等。

而'a'是字符,他实际表示的是a的ascii码,也就是97。

28楼:匿名用户

a=b>c

a=(b>c)a最后的结果不是0就是1,这可以说是一个赋值表达式a==b>c

a==(b>c),这个是判断表达式

29楼:康瑜小簧

b指针的话,b=a肯定不对。要么*b=a,要么b=&a,这两种语法都正确,但是意义不同。前者将a的值赋值给指针b所在的地址,两个值相互不影响。

后者将a的地址赋值给指针b,a和b指向同一个内存地址,该地址的值如果有变化,a和*b同时会变化。

30楼:匿名用户

p, &a表示a在内存中的地址,p=&a 表示把a在物理中的地址给变量p,*p表示取出p在内存中的值,

因为a的值在内存中的地址与p相同,所以*p=a。

关于c语言方面的数个人觉的还是谭浩强的比较经典。

C语言中与的区别,c语言中“&”与“*”有什么区别?

1楼 匿名用户 是取地址 叫解引用,意思是取地址的内容 举例 int a 3 int b a 这里 表示取a的地址 b就是去b的地址的内容就是3 2楼 诡其辞 s形式表示取变量s的地址 a b形式表示a与b之间进行位与运算。 s形式表示指针变量指向的位置 a b形式 呵呵!不消说了。 3楼 匿名用户...

c语言中与有何区别,c语言中%c与%s的有什么区别?

1楼 匿名用户 在定义变量时 是定义指针 是引用 注 好象c没有引用 例如 int pvar null 定义一个int类型指针int var 0 int pvar var 定义一个引用 并且定义时要指定所引用的对象 在使用时 是解指针 即取其指向的变量的值 是取地址int var 10 int pv...

C语言中的“行指针”与“元素指针”有什么区别

1楼 键盘雀跃 int a 4 1 2 3 4 a 0 a 1 a 2 a 3 a是一维数组名,代表数组的首地址 也就是a 0 a 1 指针移动2个字节,指向下一个数组元素,就是a 1 int a 3 4 a 4 或a 4 或a 3 4 都可以表示行指针 操作a是二维数组名,代表二维数组的首地址,也...