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是二维数组名,代表二维数组的首地址,也...