C语言运算符

2023-05-31 0 296

一、序言

在PDP合作开发中,他们通常换用C词汇作为合作开发词汇。两个主要的其原因是C词汇提供更多了大批的操作方式符,比如说他们对硬体的操作方式通常牵涉到克马的操作方式,而C词汇就提供更多了这样的操作方式符,这是其他词汇不具备的。

C语言运算符

二、C词汇操作方式符有什么样

C词汇有大批的操作方式符,可大体分成下列四类:括弧与内部结构体记号、DD91、微积分、位移、关系、位、方法论、长瓣、表达式、双引号。

括弧与内部结构体记号:括弧包括()、[],内部结构体记号指的是内部结构体核心成员提及时的记号“->”、“.”,他们也是操作方式符,因此错误率与括弧十分,这也是他们把二者放到一同探讨的其原因。再者如何使用则是内部结构体的文本。

DD91操作方式符:DD91操作方式符有许多,比如说:!方法论非、~按位row、++自增、–自减、+正、-负、&求门牌号操作方式符、*间址操作方式符、sizeof()求所占表头、(类别名)强制性隐式。这些操作方式符的演算第一类只有两个。其中&与*归属于操作符文本,他们不做譬如。方法论非他们在上面方法论操作方式符时表明,按位row他们在上面位操作方式符时表明,强制性隐式他们在文件格式切换时表明。Sizeof()具体而言不是表达式,用作求类别的所占表头。比如说:int a;sizeof(a)或sizeof(int)获得的值都是4,即auth占4个二进制。()中能是表达式也能是正则表达式也能是字符串串自表达式。比如说:char ch[20]=”hello”;他们表述字符串字符串串来留存字符串串,当他们要求字符串串宽度时他们发现sizeof(ch)获得的大小不一为20,即字符串串的大小不一,那么怎么求字符串串宽度呢?他们能用字符串串的有关表达式strlen(),但是也能sizeof(“hello”);它的结论为6,即排序字符串串最后的开始符号’\0’。++与–是我们时常加进的操作方式符,单纯而言,有下列三种情况:

a=10,a++ ++在a的前面,先把a的值表达式给表达式,a在皮夏涅1。即 a=10,b=a,a=a+1

a=10,++a ++在a的前面,a先皮夏涅1,再把a的值表达式给表达式。即 a=10,a=a+1,b=a

a=10,a– –在a的前面,先把a的值表达式给表达式,a在自减1。即 a=10,b=a,a=a-1

a=10,–a –在a的前面,a先自减1,再把a的值表达式给表达式。即 a=10,a=a-1,b=a

上例中a++/++a/a–/–a代表表达式,他们能理解为:b=a++/b=++a/b=a–/b=–a

微积分操作方式符:+、-、*、/、%。需要注意的是,在做相乘演算时,*不能省略。/表示除号,%表示取余。例:10/3=3 10%3=1 这里%是取10除以3后的余数,所以结论为1。要注意的是%左右两边必须都是整数。而10/3的结论为什么是3而不是3.3333呢?这里牵涉到文件格式切换的知识,是他们文件格式切换部分要说的。

位移操作方式符:>> << 。位移操作方式符右移与左移是克马进行操作方式。比如说:a=10,b=a>>1,

此例的意思是把数值a往右移动1位,把结论表达式给b。他们知道数据在内存中以二进制存放,10对应的二进制位1010,各位往右移一位获得0101,最右边的0被移出去,左边空的一位他们补0,所以b的值为0101,即5。这是右移,如果数据右边有足够多的0,他们能往右移动多位,规律为往右移动位移十分于除以2,移动两位十分于除以2^2,移动n位十分于除以2^n.左移<<刚好相反,它是把数据按位往左移动,最右边补0.比如说:a=10,b=a<<2;

十分于把1010往左移两位变为10 1000,即b的值为40.他们发现在数值上十分于a*2^2。

所以他们的规律就是:往右移n位,十分于除以2^n 。往左移n位,十分于乘以2^n 。实际上他们就是用左移右移来代替乘除的,这样不需要排序与表达式过程,只需要将各位移动,更加快捷。

关系操作方式符:>大于、<小于、>= 大于或等于、<=小于或等于、==等于、!=不等于。关系操作方式符用作比较大小不一,需要注意的是:1、关系操作方式符的写法。当要表示10<a<20时,应该写为a>10&&a<20。

&&是方法论与操作方式符,表示因此。2、关系操作方式符的值是方法论值。比如说:a=10,b=20; a<b的值为1,既不是a的值也不是b的值。因为关系操作方式符的值是方法论值,方法论值只有两个1,0。

如果关系成立,即方法论为真,那么值就是1.如果关系不成立,即方法论为假,那么值就是0.

方法论操作方式符:&&方法论与、||方法论或、!方法论非。方法论操作方式符的值也是方法论值,需要注意的是对数据而言非0为真,0为假。这三个操作方式符的关系为:

方法论与:两个数据全为真的时候结论才为真

1 1 1

1 0 0

0 1 0

0 0 0

方法论或:两个数据有两个为真结论就为真

1 1 1

1 0 1

0 1 1

0 0 0

方法论非:!是DD91操作方式符,非真为假,非假为真。!0结论是1,!-1结论是0,!1结论也是0

位操作方式符:按位与&、按位或、按位row、按位异或^。这些操作方式符也是克马的操作方式与方法论操作方式符要注意区分。比如说:10&20。他们看做:让各位进行相与

01010

& 1 0100

00000

那么10&20的结论就是0。

与或关系他们都知道,在补充一下异或关系,相同为假,不同为真。

1 1 0

1 0 1

0 1 1

0 0 0

他们知道这些都是克马的操作方式,他们要额外说一下按位row。比如说:int a=1;~a的值为什么呢?他们打印之后发现结论为-2。这牵涉到数据存放的知识。他们要知道数据以补码形式存放、补码形式打印。a的二进制,0000 0001,是两个正数,它的补码为它本身0000 0001,这里他们只以两个二进制为例。当他们~a后按各位row,获得1111 1110,当他们打印这个数据时,需要补码打印,这时候它的最高位为1,表示负数,负数的补码为它的反码加一。即:

1000 0001+1 = 1000 0010 对应的十进制为-2。

长瓣操作方式符:?:。它是条件语句的文本,C词汇中只有这两个长瓣操作方式符,即演算第一类有三个。比如说:a=10,b=20,a>b?a:b的值为b的值。即a大于b为真时a的值是表达式的值,否则b的值是表达式的值。

表达式操作方式符:=、+=、-=、*=、/=、%=、&=、^=、!=、<<=、>>=。即上面的记号与=相结合。=叫表达式号,使用时要注意,比如说:int a=10,表示把数据10表达式给auth表达式a。a+=b表示a=a+b,其他记号用法相同。

双引号操作方式符:“,”。比如说:a=(b+c,c+d,d+e);a的值为d+e的值,即最后两个表达式的值。所以双引号表达式的值为最后两个式子的值。但这并不表示前面的式子没用,比如说:a=(b++,c+d,b+d);他们要从左向右排序,因为b++改变了b的值,所以要先b++,在b+d。

三、操作方式符错误率

他们在做单纯的符合演算时,比如说:a+b/c+d 他们是先让b/c,在让三者进行相加。这里/号比加减演算错误率要高。同理,当他们的式子包含了以上操作方式符时,他们就要理清先算谁再算谁。这里他们已经将操作方式符的错误率整理为一句话:错误率从高到低依次为:

() DD91微积分 位移 关系 位 方法论 长瓣 表达式 双引号

四、操作方式符结合性

这里探讨的情况是当式子中几个操作方式符错误率相同时,应该先算谁再算谁。比如说:*p++,他们知道*与++都是DD91操作方式符,这时候先算哪个呢?他们也给大家总结了一句话:

DD91、长瓣、表达式操作方式符结合性自右向左,其他操作方式符结合性自左向右。

他们给了如下三个例子:

Int a=10,int *p=&a,求*p++。根据结合性自右向左,应该先算p++,即p指向a上面的那块空间。所以*p++表示a上面那块空间的值。

a>b?a>c?a:c:b>c?b:c; 这个式子表示的是求三个数最大值。根据结合性自右向左,先算b>c?b:c求b和c的最大值,在算a>c?a:c求a和c的最大值。最后比较a与b的值。

a=b+c=a+b;这种写法是错误的,因为他的结合性自右向左,且+优先级比=高,所以是先把a+b的值表达式给b+c,他们无法把两个值表达式给表达式,即表达式号左边不能为式子。

五、文件格式切换规则

1、操作方式符左右两边类别相同时,获得的结论也是这个类别。例:1/2=0,10/3=3

2、操作方式符左右两边类别不同时,先把他们往精确度更高的一侧切换,变为相同的类别。 例:1.0/2=0.5,10/3.0=3.333333

3、表达式号右面的数据会自动切换为左面的正则表达式。例:int a=2.678。a的值为2

4、他们能对数据进行强制性隐式。例:float a=2.789,(int)(a);a的类别变为int,值为2

最后,想学习C词汇的小伙伴们!

大家准备的学习资料!

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务