C语言-数据类型和变量(速学!)

本文介绍了C语言中的数据类型,包括内置类型如字符、整型、浮点型和布尔型,以及自定义类型如数组、结构体、枚举和联合体。还详细讲解了变量的概念,如何声明和初始化变量,以及变量的分类——全局变量和局部变量。此外,文章还涉及了算术操作符、赋值运算符、自增自减操作符、强制类型转换以及输入输出函数scanf和printf的使用。
摘要由CSDN通过智能技术生成

C语言-数据类型和变量(速学!)

数据类型

凡是生活中的东西要摄入计算机,那就称之为数据,而数据有很多种,从而计算机中就有了数据类型

数据类型
内置类型
自定义类型
字符-char
有符号char
无符号char
整形-int
短整型
整型
长整型
超长整型
浮点型
布尔类型_Bool
数组-arr
结构体-struct
枚举-enum
联合体-union

字符:

[signed] char//有符号字符
unsigned char//无符号字符
  • signed 和 unsigned
    C语言使用 signed 和 unsigned 关键字修饰字符(char)和整型(int)类型的。
    signed 关键字,表示一个类型带有正负号,包含负值;
    unsigned 关键字,表示该类型不带有正负号,只能表示零和正整数。
    C 语言规定 char 类型默认是否带有正负号,由当前系统决定。

整形:

  • signed 和 unsigned
    对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。默认情况,关键字 signed ⼀般都省略不写,int 类型也可以不带正负号,只表示非负整数。unsigned int 里面的 int 可以省略,。
  • 短整型
short [int]
[signed] short [int]
unsigned short [int]
  • 整型
int
[signed] int
unsigned int
  • 长整型
long [int]
[signed] long [int]
unsigned long [int]
  • 更长的整型
    C99中引入
long long [int]
[signed] long long [int]
unsigned long long [int]

浮点型:

float(单精度)
double(双精度)
long double

布尔型:

0表示假

非零表示真

值为true或false

数据类型的取值范围

每⼀种数据类型有自己的取值范围,也就是存储的数值的最大值和最小值的区间。
为了代码的可移植性,需要知道某种整数类型的极限值时,应该尽量使用这些常量:

  • 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 的最大值。

变量

类型是用来创建变量的。C语言中把经常变化的值称为变量,不变的值称为常量
变量创建的语法形式是这样的:
数据类型+变量名

data_type    name;
int age;//整形变量
int age = 18;//初始化
变量分类
  • 全局变量(放在内存的静态区)
    在大括号外部定义的变量就是全局变量
    全局变量的使用范围更广,整个工程中想使用,都是有办法使用的。
  • 局部变量 (放在内存的栈区)
    在大括号内部定义的变量就是局部变量
    局部变量的使用范围是比较局限,只能在自己所在的局部范围内使用的。
#include <stdio.h>
int global = 2023;//全局变量
int main()
{
    int local = 2018;//局部变量
    printf("%d\n", local);
    printf("%d\n", global);
    return 0;
}

局部变量和全局变量同名的时候,局部变量优先使⽤,遵循就近原则

算术操作符:+、-、*、/、%

+(加法)、-(减法)

#include <stdio.h>
int main()
{
 int x = 4 + 22;
 int y = 61 - 23;
 printf("%d\n", x);
 printf("%d\n", y);
 return 0;
}

*(乘法运算)

#include <stdio.h>
int main()
{
 int num = 5;
 printf("%d\n", num * num); // 输出 25
 return 0;
}

/(除法运算)

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

C 语言里面的整数除法是整除,只会返回整数部分,丢弃小数部分。
如果希望得到浮点数的结果,两个运算数必须至少有⼀个浮点数

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

%(求模运算,即返回两个整数相除的余值)

#include <stdio.h>
int main()
{
 printf("%d\n", 11 % -5); // 1
 printf("%d\n",-11 % -5); // -1
 printf("%d\n",-11 % 5); // -1
 return 0;
}

负数求模的规则是,结果的正负号由第一个运算数的正负号决定。

赋值运算符

在变量创建的时候给一个初始值叫初始化,在变量创建好后,再给一个值,这叫赋值。

int a = 100;//初始化
a = 200;//赋值,这⾥使⽤的就是赋值操作符
  • 连续赋值
int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右向左依次赋值的。
  • 复合赋值
int a = 10;
a = a+3;
a = a-2;
这样代码C语⾔给提供了更加⽅便的写法:
int a = 10;
a += 3;
a -= 2;
以下这些都是赋值运算符
+= -=         *= /= %=          >>=  <<=          &= |= ^=

单目操作符: ++、- -、+(正)、-(负)

  • ++是一种自增的操作符,又分为前置++和后置++,- -是一种自减的操作符,也分为前置- -和后置- -.
    前置++:先+1,后使用;
    后置++:先使用,后+1;
    前置- -:先-1,后使用;
    后置- -:先使用,后-1;

强制类型转换

int a = (int)3.14;//意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分

scanf函数

给变量输入值就可以使用scanf 函数

#include <stdio.h>
int main()
{
   int score = 0;
   printf("请输⼊成绩:");
   scanf("%d", &score);
   printf("成绩是:%d\n", score);
   return 0;
}

scanf() 提供了⼀个赋值忽略符(assignment suppression character)*。只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。

printf()函数

printf() 的作用是将参数⽂本输出到屏幕。它名字里面的 f 代表 format (格式化),表示可以定制输出文本的格式。

#include <stdio.h>
int main() 
{
 printf("Hello World\n");
 return 0;
}

占位符

printf() 可以在输出⽂本中指定占位符。
所谓 “占位符”,就是这个位置可以⽤其他值代⼊。
#include <stdio.h>

int main()
{
 printf("There are %d apples\n", 3);//%d就是占位符
 return 0;
}

其他的占位符

  • %a :十六进制浮点数,字母输出为小写。
  • %A :十六进制浮点数,字母输出为大写。
  • %c :字符。
  • %d :十进制整数。
  • %e :使用科学计数法的浮点数,指数部分的 e 为小写。
  • %E :使用科学计数法的浮点数,指数部分的 E 为大写。
  • %i :整数,基本等同于 %d 。
  • %f :小数(包含 float 类型和 double 类型)。
  • %g :6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的 e
    为小写。
  • %G :等同于 %g ,唯一的区别是指数部分的 E 为大写。
  • %hd :十进制 short int 类型。
  • %ho :八进制 short int 类型。
  • %hx :十六进制 short int 类型。
  • %hu :unsigned short int 类型。
  • %ld :十进制 long int 类型。
  • %lo :八进制 long int 类型。
  • %lx :十六进制 long int 类型。
  • %lu :unsigned long int 类型。
  • %lld :十进制 long long int 类型。
  • %llo :八进制 long long int 类型。
  • %llx :十六进制 long long int 类型。
  • %llu :unsigned long long int 类型。
  • %Le :科学计数法表示的 long double 类型浮点数。
  • %Lf :long double 类型浮点数。
  • %n :已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
  • %o :八进制整数。
  • %p :指针。
  • %s :字符串。
  • %u :无符号整数(unsigned int)。
  • %x :十六进制整数。
  • %zd : size_t 类型。
  • %% :输出一个百分号。
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值