C语言入门基础day2

一.输入与输出函数

1.输出函数:printf()

//函数原型:int printf(const char *format, ...)
案例:
printf("%d\n", x);
printf("%d %d\n", x, y);

2.输入函数:

2.1 scanf()
// 函数原型:int printf(const char *format, ...)
//scanf函数从标准输入读取输入,并根据提供的 format 来浏览输入阻塞性函数
案例:
int x;
scanf("%d", &x);
char y;
scanf("%c", &y);
int a, b;
scanf("%d %d", &a, &b);
2.2 getchar()
// 函数原型:int getchar(void)
// getchar函数从键盘读取下一个可用的字符,并把它返回为一个整数
案例:
char ch;
ch = getchar();
printf("%c\n", ch);

二.运算符和表达式

// 表达式概念:表达式就是通过运算符将运算对象(操作数)连接起来的式子,
//就叫表达式
案例:
a+b, x=a+2, x=y>z, x++
// 运算符概念:运算符是一种告诉编译器执行特定的数学或逻辑操作的符号,
//C语言内置了丰富的运算符,并提供了以下类型的运算符

1.算术运算符: +,-,*,/,%,++a(前自增),a++(后自增),--a(前自减),a--(后自减)
// 注意!:前自增/前自减先计算后引用,后自增/后自减先引用后计算

2.赋值运算符: =,+=,-=,*=,/=,%= (=代表赋值,==代表相等)
 案例:	a=2 		表示将2赋值给a (a:左值,2:右值)
		y = ×+100
		y = 200
		y = X
		y = X+200
		c + 1 = 10 是错误的
//从上面几个表达式我们可以看出:右值可以是常量可以是变量,也可以是
//任何可以产生一个值的表达式(当然任何表达式最终都有一个最终的值)

3.关系运算符:
//概念:关系运算符用于比较两个数值中间的关系,所以也叫做比较运算符
包含:==,>,<,>=,<=, !=(不等于)

4.逻辑运算符:
//概念:计算机通过两个逻辑来表示两个数值之间的关系
	包含:!,&&,||
	逻辑真(关系成立):非0
	逻辑假(关系不成立):0
	注意:1 是“真”,但是“真”不是1(只要不为0,就都为真)
	错误案例:
	int x;
    scanf("%d",&x);
    if(60 <= x <= 70)
    {
        printf("及格");
    }  
结果:无论输出什么都是及格,因为该判断语句会先执行60<=x,得到0/1然后执0/1<=70
	正确案例:
	int x;
    scanf("%d",&x);
    if(x>=60 && x<=70)
    {
        printf("及格");
    }
    
  4.1逻辑短路:
  int main()
	{
	  int a = 1;
	  if(1 || ++a);  //逻辑短路,不会执行++a;
	  printf("a = %d\n", a);
	  if(0 || ++a);  //逻辑没有短路,会执行++a;
	  printf("a = %d\n", a);
	}
	
5.位运算符:
//概念:位运算是指按二进制进行的运算。计算机所有的计算最终都是通过二进制的
//位运算进行的
	包含:&,|,>>,<<,^,~
	练习:通过printf打印变量的二进制数
	int x,m,a[16]={0},i=0;
    scanf("%d",&x);
    if(x<0)
    {
        x=-x;
        m=1;
    }
    while(x!=1)
    {
        a[i++] = (x%2);
        x/=2;
    }
    a[i]=x;
    printf("%d",m);
    for(int j=14;j>=0;j--)
    {
        printf("%d",a[j]);
    }
    printf ("\n");
    
 5.1扩展
  	5.1.1 变量交换:不使用中间变量交换两个整型变量的值
  	案例:
  	int a=3,b=4;
  	a^=b;
  	b^=a;
  	a^=b;
  	
 5.2判断奇偶性
 案例1(a%2)
 int a=0;
 scanf("%d",&a);
 if(a%2)  printf("奇数");
 else 		printf("偶数");
 
 案例2(a&1)
  int a=0;
 scanf("%d",&a);
 if(a & 1)  printf("奇数");
 else 		printf("偶数");
 
 5.3高低位交换
 案例:
 int a=0x12345678; //0x:16进制前缀
 a=(a>>16)|(a<<16);
 printf("%x",a);
 
 5.4置位和清零
 //概念:
 //置位:在二进制情况下把某一位变成1
 //清零:在二进制情况下把某一位变成0
 置位案例:
 	int a=5; //0101 -->1101 (13)
 	a|=1<<3;
 	printf("%d\n",a);
 清零案例:
	int b=9; //1001 -->0001 (1)
 	b&=~(1<<3);
 printf("%d\n",b);
 
 5.5数据的“拆解”:在数据的传输过程中需要对整型数据进行拆解,例如 int x =
0x12345678,我们需要将x分别拆解成0x12 0x34 0x56 0x78进行传输
 案例:
 	int x=0x12345678,b,c,d,e;
 	b=(x>>24)&0xFF;
 	c=(x>>16)&0xFF;
 	d=(x>>8)&0xFF;
 	e=x&0xFF;
 	printf("b=%x,c=%x,d=%x,e=%x",b,c,d,e);
 	
 5.6数据的“组装”:“拆解”的反向操作
	int x;
	x = (0x12<<24 | 0x34<<16 | 0x56<<8 | 0x78);
	printf("%x\n",x);
	//结果:返回12345678
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值