第二天,数据类型和变量!

本文详细介绍了C语言的基本语句类型(空语句、表达式语句、函数调用、复合语句和控制语句),包括条件判断、循环和转向结构,以及注释的两种形式。同时讨论了字符、整型、浮点型、布尔类型和数据类型取值范围,以及算术操作符、赋值符号和单目操作符。还涉及了强制类型转换和输入输出函数scanf和printf的基础概念。
摘要由CSDN通过智能技术生成

(以下为昨天内容的补充,是个人学完之后觉得有所遗漏的,会有分割线!)

语句和语句的分类

C语言的代码是由一条一条的语句构成的,可分为以下五类

1.空语句

2.表达式语句

3.函数调用语句

4.复合语句

5.控制语句

空语句最为简单,一个分号就是一条语句,是空语句。

#include <stdio.h>
int main()
{
    ;//空语句
    return 0;
}

然后是表达式语句,也就是在表达式的后面加上分号;

#include <stdio.h>
int main()
{
    int a = 20;
    int b = 0;
    b = a + 5;//表达式语句
    return 0;
}

接着是函数调用语句;

#include <stdio.h>

int main()
{
    printf("hehe\n");//这就是最简单的函数调用语句

    return 0;
}

然后是复合语句(里面的代码其实也是一知半解,只是懂了复合语句的概念)

#include <stdio.h>

void print(int arr[], int sz)//函数的大括号中的代码也构成复合语句
{
     int i = 0;
     for(i=0; i<sz; i++)
     {
         printf("%d ", arr[i]);
     }
}
int main()
{
    int i = 0;
    int arr[10]={0};
    for(i=0; i<10;i++)//for循环=的循环体的大括号中的也是复合语句
    {
       arr[i] = 10-i;
       printf("%d\n",arr[i]);
    }
     return 0;
}

最后是控制语句,用来控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构: 顺序结构、选择结构、 循环结构),他们有特定的语句定义符组成,C语言有九种控制语句。

可分成以下三类:

1.条件判断语句也叫分支语句:if语句、switch语句;

2.循环执行语句:do while语句、 while语句、for语句:

3.转向语句: break语句、goto语句、continue语句、return语句。

1.注释是什么?以及注释的两种形式

注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。
注释是给程序员⾃⼰,或者其他程序员看的。
好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。
当然不写注释可能会让后期阅读代码的⼈抓狂。

注释的两种形式

第一种是/**/的形式

将注释放在/*    */之间,内部可以分行。

/*
这是一行注释

*/

可以插在行内

int fopen(char* s /* file name */, int mode);

上面的示例中,/* file name */用来对函数的参数进行说明;在语言的运行当中会被视为一个空格

/**/的这个注释不支持嵌套注释,/*开始后,只要遇到第一个*/,就认为结束注释了

第二种是// 的形式

将注释放在//的后面

-------------------------------------------------------------------------------------------------------

以下为今天新学的内容

------------------

1.1字符

char
[signed] char
[unsigned] char

1.2整型

//短整型
short [int]
[signed] short [int]
unsigned short [int]

//整型
int
[signed] int
unsigned int

//长整型
long int 
[signed] long [int]
unsigned long [int]

//更长的整型
long long [int]
[signed] long long [int]
unsigned long long [int]


1.3浮点型

float
double
long louble

1.4布尔类型

用整数0表示假,非零数表示真。

布尔类型使用得调用头文件<stdbool.h>

布尔类型变量的取值是:true或者false

#include <stdbool.h>


_Bool flag = true;
if(flag)
   printf("i like c\n");

2.signed和unsigned

C语言使用signed和unsigned关键字修饰字符型和整数类型的。

signed关键字,表示一个类型带有正负号,包含负值;

unsigned关键字,表示该类型不带有正负号,只能表示零和正整数。

对于int类型,默认是带有正负号的,所以int等同于signed int

由于这是默认情况,所以signed一般都省略不写

整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。
⽐如,16位的 signed short int 的取值范围是:-32768~32767,最⼤是32767;⽽
unsigned short int 的取值范围是:0~65535,最⼤值增⼤到了65,535。32位的 signed
int 的取值范围可以参看 limits.h 中给出的定义。
下⾯的定义是VS2022环境中,limits.h中相关定义
#define SHRT_MIN (-32768) //有符号16位整型的最⼩值
#define SHRT_MAX 32767 //有符号16位整型的最⼤值
#define USHRT_MAX 0xffff //⽆符号16位整型的最⼤值
#define INT_MIN (-2147483647 - 1) //有符号整型的最⼩值
#define INT_MAX 2147483647 //有符号整型的最⼤值

unsigned int 里面的int 可以省略,并且字符类型char也可以设置signed和unsigned形式

注意,C 语⾔规定 char 类型默认是否带有正负号,由当前系统决定。 这就是说, char 不等同于 signed char ,它有可能是 signed char ,也有可能是 unsigned char 。 这⼀点与 int 不同, int 就是等同于 signed int

3.数据类型的取值范围

上述的数据类型很多,尤其数整型类型就有short、int、long、long long 四种,为什么呢?
其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类型,我们就可以在适当的场景下去选择适合的类型。如果要查看当前系统上不同数据类型的极限值:
limits.h ⽂件中说明了整型类型的取值范围。
float.h 这个头⽂件中说明浮点型类型的取值范围。
为了代码的可移植性,需要知道某种整数类型的极限值时,应该尽量使⽤这些常量。
SCHAR_MIN SCHAR_MAX :signed char 的最⼩值和最⼤值。
SHRT_MIN SHRT_MAX :short 的最⼩值和最⼤值。
INT_MIN INT_MAX :int 的最⼩值和最⼤值。
LONG_MIN LONG_MAX :long 的最⼩值和最⼤值。
LLONG_MIN LLONG_MAX :long long 的最⼩值和最⼤值。
UCHAR_MAX :unsigned char 的最⼤值。
USHRT_MAX :unsigned short 的最⼤值。
UINT_MAX :unsigned int 的最⼤值。
ULONG_MAX :unsigned long 的最⼤值。
ULLONG_MAX :unsigned long long 的最⼤值。

4.变量

了解清楚了类型,我们使⽤类型做什么呢?类型是⽤来创建变量的。什么是变量呢?C语⾔中把经常变化的值称为变量,不变的值称为常量。 变量创建的语法形式是这样的:
data_type mame;
  |  |     |
  |  |     |
数据类型  变量名
int age;//整型变量
double weight;//浮点型变量
char ch; //字符变量

变量在创建时就给一个初始值,就叫初始化。

变量有全局变量和局部变量

在⼤括号外部定义的变量就是全局变量,全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。

在⼤括号内部定义的变量就是局部变量,局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。
其实当局部变量和全局变量同名的时候,局部变量优先使⽤!
这是全局变量和局部变量在内存中的存储

算术操作符:+ - * / %

+、-、*这些过于简单,不写了直接讲  /   和     %

除法两端如果都是整数,执行的是整数除法,得到的结果也是整数。

#include <stdio.h>
int main ()
{
    float x = 6 / 4;
    int y = 6/4;
    printf("%f\n", x);//输出1.000000
    printf("%d\n", y);//输出1
    return0;
}

在上面示例中,尽管x的类型是浮点数,但是6/4 得到的结果是1.0而不是1.5.原因就是c的整数除法是整除,只会返回整数部分,丢失小数部分。

如果希望得到浮点是的结果,两个运算数就中至少有一个浮点数,这时才会进行浮点数整除法。

#include <stdio.h>
int main()
{
    float x = 6.0/ 4;//或者写成6 / 4.0
    printf("%f\n", x);//输出1.500000
    return 0;
}

%表示求余,即返回两个整数相除的余值,只适用于整数

结果的正负号只看第一个运算数,即被除数的正负号来决定

6.赋值符号=

7.单目操作符:++、--、+、-

前面的都是双目操作符,要有两个运算数

++是一种自增的操作符,分为前置++和后置++,--是一种自减的操作符,也分为前置和后置

前置++

int a =10;
int b = ++a;//++的操作数是a,是放在a前面的,就是前置
printf("a=%d b=%d\n",a ,b)

计算口诀是 先+1, 后使用;

a原来是10.先+1,然后变成11赋值给b

相当于

int a = 10;
a = a+1;
b = a;
printf("a=%d b=%d\n",a , b);

后置++

计算口诀是先使用,后+1

a原来是10,先使用就是先赋值给b,然后a再+1

结果为b=10,a=11

相当于

int a = 10;
int b = a;
a = a+1;
printf("a=%d b=%d\n",a , b);

前置--和后置--原理相同,略

8.强制类型转换

int a =3.14;
//a的是整型而3.14是浮点型。两边类型不一样会报错

要消除警告就要强制类型转换:

int a =(int)3.14;

9.scanf和printf介绍

这个留给后续补充,有点多

---------------------------------------------------------

  • 61
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值