c语言中(a!b)?a-b:a+b的含义是什么

2020-11-26 08:33:34 字数 5905 阅读 2311

1楼:匿名用户

如果a不等于b那么输出a-b,否则,输出a+b

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

2楼:學雅思

一、表达意思不同

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

2、(a

二、逻辑顺序不同

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

三、执行顺序不同

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

3楼:幻翼高达

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。

4楼:鱼与咸鱼

1、本质区别

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

2、输出区别

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

str = ‘a’输出的测试65

3、底层区别

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

5楼:go学龙

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

第二个若a

6楼:匿名用户

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

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

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

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

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

7楼:匿名用户

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的值都不发生改变。

8楼:周肆爻

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

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

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

9楼:新来的文盲

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”,因此,你只要给力他首地址,他就知道从**开始,从**结束了。

纯手打,望采纳。

10楼:

&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...之类的字符来表示,直接对内存地址进行存取。

11楼:星呈幻

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的地址”是正好是相反的操作。

12楼:匿名用户

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

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

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

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

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

13楼:徐章林

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

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

14楼:孔明灯

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

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

15楼:自然而然

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

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

16楼:匿名用户

在 c 语言中,

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

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

17楼:菊隐逸者也

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

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

18楼:匿名用户

a=b>c

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

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

19楼:康瑜小簧

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

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

20楼:匿名用户

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

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

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

21楼:庚琰

引号引起来说明是字符。

不因起来说明是变量名。

printf("%c",a);

printf("%d",'a');

比较两者的区别。

上面是a的变量内容。

而下面是a的ascii码,97.

22楼:匿名用户

a表示的是存储数组a[..]的首地址,而a[..]表示的是这个字符的值。

拿旅店比喻:你住在302房。那么a就表示302这个门牌号,而a[..

]就表示你。假设服务员要叫你吃饭,就得先找到302这个房间,然后再把你请到大厅吃饭。操作系统无论是存储数据还是读取数据,都是先找到数据的首地址!

c语言中a!=b 什么意思呢

23楼:枫玺

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

++a 是a自增1后再参与其它运算。

!=表示不等于。

例:对于以下,有int x = 5, y = 6, z;z = ++x + y++;

使用的技巧就是:把原始计算式转化成多个、有先后计算顺序的、小的计算式,然后带入变量的值,进行求解。记住:同一优先级的运算符的计算顺序是从右往左。

z = ++x + y++; 可以转化为:

x = x +1;

z = x + y;

y = y + 1;

带入x = 5, y = 6,可得x = 6; z = 12; y = 7;

扩展资料

a++ 和++a 的主要区别是自增的顺序,++在变量前表示先进行自增运算,即变量的值加1。++在变量后则进行运算后再进行自增运算。

在同一条语句中,被操作的数出现多次是可以通过编译的,但是其在c++ standard等语言标准中被定义为"undefined behavior"(不确定的行为),即不同的编译器或编译器版本所编译得到的机器码可能不尽相同。

不推荐在同一条语句中使被操作的数出现多次,这不仅仅将导致程序的含义难以理解,可读性大幅降低,同时可能导致不同的编译器或编译器版本得到不同的结果。

前置后置区别的举例:

a = i++;

相当于 a = i; i++;

a = ++i;

相当于 i++; a = i;

概率论P(A-B)的含义?P(A+B)的含义?P(A+B

1楼 匿名用户 p a b p a b p a p b p ab p ab p a b p a p b a 概率论中p a b p a p b 和p a b p a p b 成立吗? 2楼 禾鸟 都是成立的,但是需要条件 1 p a b p a p b 在概率论中,先有事件相等,才有概率相等。 由概...

C语言a b和a b的区别,C语言,++a+b和++b+a有什么区别

1楼 匿名用户 自增对象不同 a b 最后自增的是b a b 最后自增的a b c语言, a b和 b a有什么区别 2楼 珑月三 a b是先a加1,然后再加b b a是先b 1,然后再加a 3楼 亱風 a b是a先自加然后加b b a是b自加,,然后加a 结果一样,但是a 和b的值不相同 c语言b...

在C语言中“a b”是什么意思,c语言中,a^b是什么意思?

1楼 匿名用户 a 异或 b 按位异或 比如 a 为 5 0101 b 为 7 0111 0010 对应位相同为0, 不同为1 希望对你有帮助。谢谢 c语言中,a b是什么意思? 2楼 匿名用户 按位异或, 例如 include int main 输出结果是8 1010 10 0010 2 1000...