第2章-数据类型和表达式

🌞欢迎来到机器学习的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于练气阶段,希望各位仙友顺利完成突破

📆首发时间:🌹2021年10月10日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

🍈 数据类型

整形

字符类型

​编辑

 布尔类型

 浮点类型

 🥒简单的输入输出

 🍉运算符和表达式

 🌮实战巩固

🍈 数据类型

       数据在C语言中总体可以分为三类:算数类型void型以及派生类型,具体细分情况如图所示。

整形

             整数类型中的整型,使用最多的是int型,以这种类型为基础,通过long、short、unsigned、signed关键字的修饰形成不同的整型。

int age=19;

字符类型

    一个char型的数据存储在内存中并不是存字符本身,存储的是该字符的ASCII码。

  char ch='A';
  char c=65;

#include <stdio.h>
int main() {
  char a=65;
  char b='A';
  printf("a=%d,b=%d\n",a,b);
  printf("a=%c,b=%c\n",a,b);
  return 0;
}

 布尔类型

        C99标准以后增加了布尔类型,并且提供了_Bool这个关键字来声明这种类型的数据,_Bool型数据只有true和false这两个值,C语言使用数值1表示true,0表示false,所以_Bool型属于无符号整型。对于一个_Bool型的变量,不管给它赋什么标量值,如34、1、0、-2.0,它接收值的原则是非0值即认定是1,0就是0。输出_Bool型值时用格式控制符%d。

#include<stdio.h>
int main(void)
{
_Bool x,y,z; 
x=50;   
y=0;    
z=-1;   
printf("x=%d,y=%d,z=%d \n",x,y,z); 

 浮点类型

 实数浮点类型

double a=1.1;

举个栗子🌰

复数浮点类型(平时用的很少,这里不做介绍)

下面我们举一个小栗子(如果是新手的话,可以不看哈🎃):

#include<stdio.h>
int main(void)
{   
    char name[40];//名字 
    int age;//年龄
    long id;//学号
	double  en,ch,ma;//英语,语文,数学三科的成绩
	double ave;//三科的平均成绩
	char c;//表示水平
	_Bool x; 

    printf("请输入您的名字\n");
    scanf("%s",name);
    printf("请输入你的年龄:\n");
    scanf("%d",&age);
    printf("请输入你的学号:\n");
    scanf("%ld",&id);
    printf("请输入英语,语文,数学三科的成绩:\n");
    scanf("%lf%lf%lf",&en,&ch,&ma);
    ave=(en+ch+ma)/3;
	if (ave>=90)
	{   c='a';
	    x='a';
	}
	
    printf("------------ info of qing yun ----------\n");
    printf("name=%s\n",name);
    printf("age=%d\n",age);
    printf("id=%ld\n",id);
    printf("ave=%lf\n",ave);
    printf("c=%c\n",c);
    if (x)
	{   
	  printf("信息展示的程序已经结束\n");
	}
    return 0; 
}


 🥒简单的输入输出

定义一个变量,看一下它的输出:

#include<stdio.h>
int main(void)
{
int age=1;
printf("age=%d \n",age); 
printf("age=%d \n",&age); 
printf("age=%10d \n",age); 
printf("age=%-10d \n",age); 
}

用scanf函数为一个变量输入值:

#include<stdio.h>
int main(void)
{
int age;
scanf("%d",&age)
printf("age=%d \n",age); 
}

         在命令行窗口,输入一个整数,比如输入10,然后按Enter键,10这个整数就被放到了age所在的空间。


 🍉运算符和表达式

C语言提供的运算符有以下13

(1) 算术运算符 (+-*/%、++、--)

(2) 关系运算符 (>、<、==、>=、<=!=)

(3) 逻辑运算符 (!&&||)

(4) 位运算符   (<<>>~|、、&)

(5) 赋值运算符 (=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>= )

(6) 条件运算符 (?:)

(7) 逗号运算符 (,)

(8) 指针运算符 (*&)

(9) 求字节数运算符 (sizeof)

(10) 强制类型转换运算符 ( (类型) )

(11) 分量运算符 (. ->)

(12) 下标运算符 ([ ])

(13) 其他 (如函数调用运算符())

   C语言中运算符参与运算也有优先级别,所标优先级数值越小的级别越高,越优先计算。

表达式是由一系列运算符(Operators)和操作数Operands)组成的式子,它计算一个值、指定对象或函数、产生副作用

算术运算符

举个栗子🌰

计算25/8的结果,结果使用小数表示。

#include<stdio.h>
int main(void)
{
  int a=25;
  int b=8;
  printf("%d\n",a/b);
  printf("%f",a/(b*1.0));
}

自增、自减运算符

      C语言提供了自增(++)、自减(--)两个运算符可用于标量类型数据自身加1或减1运算,不过它们只能作用于可修改左值。自增、自减运算符都分为两种,如果放在左值的左边,称前缀运算符,是先对左值加、减1,再利用左值,相当于先执行“操作数=操作数+1”再加1

举个栗子🌰

#include<stdio.h>
int main(void)
{
  int a=3;
  int b,c;
  b=a++;
  printf("b=%d\n",b);
  printf("a=%d\n",a);
  c=++a;
  printf("b=%d\n",c);
  printf("a=%d\n",a);
}

 关系运算符及关系表达式

    C语言中提供的关系运算符有><==>=<=、!=,分别表示大于、小于、等于、大于等于、小于等于和不等于。由关系运算符和表达式构成的表达式,称为关系表达式。格式如下。

                      表达式1 关系运算符 表达式2

关系表达式的值由表达式1和表达式2是否满足关系运算符定义的意义来确定,如果满足,整个关系表达式的值是true,否则为false,所以关系表达式的最终结果只有两种值。前面提到C中并没有具体定义true和false这两个值,它们分别是用1和0表示,从这个意义上讲,关系表达式的最终值只有1和0两种。

举个栗子🌰

我与鹿晗谁美?假设我的颜值是99,鹿晗是的颜值是98。

#include<stdio.h>
int main(void)
{
  int s1=99;
  int s2=98;
  if(s1>s2)
     printf("我好看");
  else
     printf("鹿晗好看");

}

逻辑运算符与逻辑表达式

      逻辑运算符有三种:&&、||、!。由这三个运算符构成的表达式称为逻辑表达式,参与计算的子表达式结果是标量类型。逻辑表达式与关系表达式一样,其值也只有true和false两种,也用1和0表示,整个逻辑表达式的结果值是int型。

举个栗子🌰

    假设有一个男生和三个女生相亲,第一个女生的要求是身高要大于175,并且资产要大于100万,第二个女生的要求是两个条件满足其一就好,第三个女生的条件是只要不是个女生就行

#include<stdio.h>
int main(void)
{
  int h=176;
  int w=99;
  _Bool g=0;
  if(h>175 && w>100)
      printf("第一个女生同意\n");
  if(h>175 || w>100)
      printf("第二个女生同意\n");
  if(! g)
      printf("第三个女生同意\n");
}

 赋值运算符与赋值表达式

      复合赋值运算符C语言中的复合赋值运算符有+=、-=、*=、 /=、%=、&=、^=、|=、<<=、>>=。它们也构成赋值表达式,例如,x*=y+8、x/=3、x %= y+3、x-=y+2。

复合赋值运算符把它左边值与右边表达式,用=左边给定运算符进行运算,得到的结果赋给左边的值。面实例中的个表达式分别相当于x=x*(y+8)、x= x /3、x=x%(y+3)、x=x-(y+2)。

举个栗子🌰

小明今年3岁了,小红的年龄是小明年龄加上8之后再乘2。

#include<stdio.h>
int main(void)
{
  int a=3;
  int b=2;
  b*=a+8;
  printf("b=%d\n",b);
}


b=22

条件运算符和条件表达式

条件运算符为 ?:,这是一个三目运算符,它的一般格式为:

    表达式1?表达式2:表达式3

由条件运算符和操作数构成的表达式,称为条件表达式。整个表达式值的计算规则是:先计算表达式1的值,如果是非0,计算表达式2的值,并把这个值作为整个条件表达式的值,结束。如果表达式1的值为0,则计算表达式3的值,并把这个值作为整个表达式的值,结束。

举个栗子🌰

   我与鹿晗谁美?假设我的颜值是99,鹿晗是的颜值是98。现在有一个女粉丝说,如果卿云好看我就成为他粉丝,如果鹿晗好看我就成为鹿晗的粉丝。

#include<stdio.h>
int main(void)
{
  int s1=99;
  int s2=98;
  int f1=1300;
  int f2=1200;
  s1>s2?f1++:f2++;

}

逗号运算符和逗号表达式

         用逗号运算符把两个及以上的子表达式连接起来的表达式,称逗号表达式。格式如下。

子表达式1, 子表达式2, ... , 子表达式n,例如,3+5,6+8和a=4+x, x+5%(4+4),i++是两个逗号表达式。逗号表达式从表达式1开始,分别计算每一个子表达式的值,一直算到子表达式n整个逗号表达式的值就是表达式n的值。

举个栗子🌰

#include<stdio.h>
int main(void)
{
  int a=3;
  int b;
  b=(a+1,a+2,a+3);
  printf("b=%d",b);
}


🌮实战巩固

🌰定义两个变量,并对它们进行初始化,然后把一个变量的值赋给另一个变量,并输出两个变量的值。

#include<stdio.h>
int main(void)
{   
    int age1,age2;
    scanf("%d",&age1);
    age2=age1;
    printf("age1=%d,age2=%d\n",age1,age2);
    return 0; 
}

 🌰格式控制符中指定输出变量占用的正宽度 

#include<stdio.h>
int main(void)
{   
    long a=10l;
    printf("a=%10ld",a);
    return 0; 
}

 🌰一个字符数据的不同输出形式。

#include<stdio.h>
int main(void)
{   
    char ch='a';
    printf("ch=%d,ch=%c",ch,ch);
    return 0; 
}

🌰引入头文件后的布尔变量定义、赋值和输出

#include<stdio.h>
#include<stdbool.h>
int main(void)
{
    bool x,y;   //可用bool定义两个布尔型变量。
    x=true;     //可以应用逻辑值true。
    y=false;    //可以应用逻辑值false。
   printf("x=%d,y=%d\n",x,y); //输出。
}

 

 🌰float i=10.5,x;,求表达式x=3+i++的值。

#include<stdio.h>
#include<stdbool.h>
int main(void)
{
	float i=10.5,x;
	x=3+i++;
	printf("%lf\n",x);
	printf("%lf",i);
    return 0;
}

 🌰分析下列代码的执行结果

#include <stdio.h>
int main(void)
{
	int  i=289;  //289的二进制数为 1 0010 0001,共9个bit,
//假设int型占4个字节,则其余23个位都是0。
	char c='a'; 
	c=i;        //低8位赋给c,c得到的值是0010 0001,它的十进制为33。
	printf("%c\n",c);  //%c格式输出,所以输出的是字符 '! '。
}

从这些实例可以看出,编程人员在不同类型数据参与表达式计算时,要非常小心,结果可能与表面计算不一样,这主要是由于C语言在处理不同类型数据时所用的规则造成的。

🌰有int x=10;,编程输出逗号表达式x=2*x, 20/(4+x),x=1+x的值。

#include <stdio.h>
int main(void)
{
	int x=10;
	printf("%d\n",(x=2*x, 20/(4+x),x=1+x));//注意整个逗号表达式用了()。
	return 0;
}

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卿云阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值