c语言与操作
A. c语言中的 与或非运算
C语言中的与、或、非是C语言的逻辑运算符。
1、逻辑与
在C语言中逻辑与用&&表示。
举例:a&&b(其中a、b都代表一个条件)
如果a和b都为真,则结果为真,如果a和b中有一个条件为假,则结果为假。
2、逻辑或
在C语言中逻辑或用||表示。
举例:a||b(其中a、b都代表一个条件)
如果a和b有一个或以上为真,则结果为真,二者都为假时,结果为假。
3、逻辑非
在C语言中逻辑非用!表示。
举例:!a(a代表一个条件)
如果a为假,则!a为真,如果a为真,则!a为假。
(1)c语言与操作扩展阅读
在C 语言中的逻辑运算符及优先级:
一元:!(逻辑非)。
二元:&&(逻辑与)、||(逻辑或)。
以上三种逻辑运算符中,逻辑非 ! 的优先级最高,逻辑与 && 次之,逻辑或 || 优先级最低。即算术、逻辑、赋值运算符的优先级顺序为:
逻辑非 ! >算术 > 逻辑与 &&、逻辑或 || > 赋值=
B. C语言位操作运算符 &,|,~,^,<<,>>是干什么的
& 按位与运算,如:1010 & 1100 = 1000
| 按位或运算,如:1010 & 1100 = 1110
~ 非运算,如:a = 1010; ~a = 0101
<<左移,如:1110 << 1 = 1100
>>右移,如:1000 >> 1 = 0100
C. c语言中,符号 & 是& 表示 与操作 例如: a&b 表示的就是a、b进行与操作; ,那这个跟&
&是位操作,你可以将值转换成2进制在进行操作。&&是条件运算,就是符号左右两边都为真时,整个条件才返回1
D. C语言中 & 和 && 的区别
区别:
1.运算符性质不同。
&是一个位运算符。
&&是一个逻辑运算符。
2.作用不同。
&是将两个二进制的数逐位相与,结果是相与之后的结果。
&&就是判断两个表达式的真假性,只有两个表达式同时为真才为真,有一个为假则为假,具有短路性质。
3.用途限制。
&除了是一个位运算符,也是取地址符。
&&就是一个单纯的逻辑运算符,没有任何其他含义。
参考资料
&-网络
&&-网络
E. C语言和:操作符怎么用
C语言?和:是三目运算符,也叫三元运算符。
语法:表达式1 ? 表达式2 : 表达式3;
函数:先执行表达式1,执行完毕,如果表达式1的结果为真,则执行表达式2,整个表达式的结果就是表达式2的结果,否则执行表达式3,结果是表达式3的结果。
例如:int res=1?10:20;
可以简单理解为表达式1成立吗?成立执行表达式2,否则执行表达式3。
(5)c语言与操作扩展阅读:
关于三目运算符的几点说明:
1、通常,表达式1是用于描述条件表达式中的条件的关系表达式或逻辑表达式。表达式2和3可以是常量、变量或表达式。例如:
(x==y)?y':'n'(d=b*b-4*a*c)>=0?sqrt(d):sqrt(-d)ch=(ch>='a'&&ch<='z')?(CH+32):CH
2、条件表达式的执行顺序为:首先求解表达式1。如果值为非零,则条件为真,则求解表达式2,并将表达式2的值用作整个条件表达式的值;
如果表达式1的值为0,表示条件为假,则解方程3,表达式3的值是整个条件表达式的值。例如:
(a>=0)?a:-a执行的结果是a的绝对值。
3、在程序中,直接将条件表达式的值赋给变量。例如:
min=(a<b)的结果?a:b是将条件表达式的值赋给变量min,即a和b中的较小者赋给min。
F. C语言中位操作
首先32位系统-3默认为整形占4字节(32个位),二进制表示11111111
11111111
11111111
11111101得来方法:
3的二进制位00000000
00000000
00000000
00000011,取反补1后等到上面的值
再看下-1的二进制11111111
11111111
11111111
11111111同样是1取反后补1
下面看下移位因为第一位为1,右移时根据最高位补位,移1位后值为:
11111111
11111111
11111111
11111110
再移动1位就变成了:11111111
11111111
11111111
11111111后面不管你右移多少次始终是这个结果,所以-3右移2次以上后值就是-1了。
G. c语言的按位运算符怎么操作!
位运算
在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。
一、位运算符C语言提供了六种位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。
main(){
int a=9,b=5,c;
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
2. 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
例如:9|5可写算式如下: 00001001|00000101
00001101 (十进制为13)可见9|5=13
main(){
int a=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
3. 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12)
main(){
int a=9;
a=a^15;
printf("a=%d\n",a);
}
4. 求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。例如~9的运算为: ~(0000000000001001)结果为:1111111111110110
5. 左移运算 左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,
高位丢弃,低位补0。例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。6. 右移运算右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设 a=15,a>>2 表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。
main(){
unsigned a,b;
printf("input a number: ");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}
请再看一例!
main(){
char a='a',b='b';
int p,c,d;
p=a;
p=(p<<8)|b;
d=p&0xff;
c=(p&0xff00)>>8;
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}
H. 关于C语言中 || 和 &&的用法
“||”“&&”表示逻辑运算,“||”表示或者的意思,“&&”表示并且的意思。
&&运算符需要两个表达式作为操作数,并创建一个表达式,只有当两个子表达式都为true时,该表达式才为true。
||运算符需要两个表达式作为操作数,并创建一个表达式,当任何一个子表达式为true时,该表达式为true。只要其中一个子表达式为true,则整体表达式为true,此时另外一个子表达式无论是false还是true都无关紧要。
运算符的优先级
优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:
指针最优,单目运算优于双目运算,如正负号。先算术运算,后移位运算,最后位运算。请特别注意:逻辑运算最后结合。
I. C语言中>>和<<如何使用
C语言中<< 代表左移运算符,>> 代表右移运算符,位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。
<< 代表左移运算符:左移运算符用来将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位。
例如:设无符号短整型变量a为0111(对应二进制数为0000000100010001),则:a<<3 结果为0888(对应二进制数为0000100010001000)。
>> 代表右移运算符:右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。
例如:var temp = 56 >> 2 变量temp的值为 14,因为56 (即二进制的 00111000)向右移两位等于14 (即二进制的 00001110) 。
(9)c语言与操作扩展阅读:
相关运算规则:
1、在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。
2、移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。
3、位移位运算符的优先级:算术运算符优先于位移位运算符优先于关系运算符,位移位运算符是同级别的,结合性是自左向右。
J. C语言的与运算符
&& 两者,其1 为假, 结果 必为假,
(++a>0) 为假, 结果 必为假, 所以 !(b--<=0) 不必执行。
b-- 自减因此而跳过 未执行。