目录
4、条件操作符---exp1?exp2:exp3(三目操作符)
一、操作符(续)
#include <stdio.h>
//#include <stdlib.h>
#include<string.h> //有此句以后不会出现警告
int main()
{
int a=10;
int arr[]={'a',2,3,4,5,'e'};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(arr));
return 0;
}
#include <stdio.h>
//#include <stdlib.h>
#include<string.h> //有此句以后不会出现警告
int main()
{
int a=10;
int arr[]={'a',2,3,4,5,'e'};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(arr));
return 0;
}
1、按位取反~原码、反码、补码
原码、反码、补码
只要是整数,内存中存储的都是二进制的补码
正数---原码、反码、补码 相同
负数---
原码直接按照
有符号数
任何数字都存的是补码,反码只是中间的计算状态
int a=0; //整型占用四个字节,32个bit位
int b=~a;//b是有符号的整型,最高位一般表示符号
//~按(二进制)位取反
//a===> 00000000000000000000000000000000
//b===> 11111111111111111111111111111111
//原码、反码、补码
//原码-->反码:符号位不变,其他位按位取反得到饭吗,反码+1=补码
//负数在内存中存储的时候,存储的是二进制的补码
//11111111111111111111111111111111(补码)
//11111111111111111111111111111110(反码)
//1000000000000000000000000001(原码)
printf("%d\n",b);//结果是-1---打印的是这个数的原码
#include <stdio.h>
#include<string.h> //有此句以后不会出现警告
int main()
{
int a=0; //整型占用四个字节,32个bit位
int b=~a;//b是有符号的整型,最高位一般表示符号
//~按(二进制)位取反
//a===> 00000000000000000000000000000000
//b===> 11111111111111111111111111111111
//原码、反码、补码
//原码-->反码:符号位不变,其他位按位取反得到饭吗,反码+1=补码
//负数在内存中存储的时候,存储的是二进制的补码
//11111111111111111111111111111111(补码)
//11111111111111111111111111111110(反码)
//10000000000000000000000000000001(原码)
printf("%d\n",b);//结果是-1---打印的是这个数的原码
return 0;
}
2、前置++a、后置a++(--)
int main()
{
int a1=10;
int a2=12;
int b=a1++;//后置++,先赋值后自增1
int c=++a2;//前置++,先自增1后赋值
printf("a1=%d b=%d a2=%d c=%d\n",a1,b,a2,c);
return 0;
}
int main()
{
int a1=10;
int a2=12;
int b=a1++;//后置++,先赋值后自增1
int c=++a2;//前置++,先自增1后赋值
printf("a1=%d b=%d a2=%d c=%d\n",a1,b,a2,c);
return 0;
}
3、(类型)强制类型转换
int a=(int)3.14;//有的不需要强制转换也可以
一般不建议使用强制类型转换
#include <stdio.h>
#include<string.h> //有此句以后不会出现警告
int main()
{
int a=(int)3.14;
printf("%d\n",a);
return 0;
}
二、关系操作符
三、逻辑操作符
&&逻辑与 | 全部为真才为真--1 | 注意区别&①scanf:&取地址 ②&按位与(二进制)--两个真才真 |
只要有一个为假则为假--0 | ||
||逻辑或 | 只要有一个就为真~输出为1 | 注意区别|:按位或--一个为真即真 |
全都为假才为假~输出为0 |
#include <stdio.h>
#include<string.h> //有此句以后不会出现警告
int main()
{
//true真--非0
//false 假--0
//&&--逻辑与
//||--逻辑或
int a=0;
int b=2;
int c=a&&&b;//注意区分&按位与--全部为真才为真
int d=a||b;
printf("c=%d\nd=%d",c,d); //0,1
return 0;
}
4、条件操作符---exp1?exp2:exp3(三目操作符)
#include <stdio.h>
#include<string.h> //有此句以后不会出现警告
int main()
{
int a=10;
int b=20;
int c=0;
printf("%d\n",a>b?a+b:a-b);
return 0;
}
5、逗号表达式----exp1,exp2,exp3
,
6、下标引用、函数调用和结构成员[] () . ->
[] () . ->
#include <stdio.h>
#include<string.h> //有此句以后不会出现警告
int Add(int x,int y)
{
int z=0;
z=x+y;
return z;
}
int main()
{
int arr[10]={0};
arr[4];
int a=10;
int b=20;
int sum=Add(a,b);//函数调用操作符
printf("%d\n",sum);
return 0;
}
#include <stdio.h>
#include<string.h> //有此句以后不会出现警告
int Add(int x,int y)
{
int z=0;
z=x+y;
return z;
}
int main()
{
int arr[10]={0};
arr[4];
int a=10;
int b=20;
int sum=Add(a,b);//函数调用操作符
printf("%d\n",sum);
return 0;
}
&、*、.、->