C语言学习系列-->第二弹【数据类型和变量】(下)

简介: C语言学习系列-->第二弹【数据类型和变量】

四、变量

4.1 变量的创建

语法形式:

data_type name;
int age; //整型变量
char ch; //字符变量
double weight; //浮点型变量
//初始化
int age = 18;
char ch = 'w';
double weight = 48.0;
unsigned int height = 100;

4.2 变量的分类

全局变量在⼤括号外部定义的变量就是全局变量,全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。
局部变量在⼤括号内部定义的变量就是局部变量,局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。

#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 n = 1000;
int main()
{
 int n = 10;
 printf("%d\n" n);//打印的结果10
 return 0;
}

局部变量和全局变量同名的时候,局部变量优先使⽤。可以理解为就近原则吧

这里咱们加一个小插曲,在操作系统里面会有详细讲解

全局变量和局部变量在内存中存储在哪⾥呢?

  1. 局部变量是放在内存的栈区
  2. 全局变量是放在内存的静态区
  3. 堆区是⽤来动态内存管理的

五、算数操作符:+、-、*、/、%

+ - * \ % ,都是双⽬操作符
注:操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。

5.1 + - * /

#include <stdio.h>
int main()
{
 //加法and减法
 int x = 4 + 22;
 int y = 61 - 23;
 //乘法
 int num = 5;
//除法:除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。
 float a = 6 / 4;
 int b = 6 / 4;
 printf("%d\n", x);
 printf("%d\n", y);
 printf("%d\n", num * num); // 输出 25
 printf("%f\n", a); // 输出 1.000000
 printf("%d\n", b); // 输出 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;
}
// 6.0 / 4 表⽰进⾏浮点数除法,得到的结果就是 1.5

再举个例子:

#include <stdio.h>
int main()
{
 int score = 5;
 score = (score / 20) * 100;
 return 0;
}

你可能觉得经过运算, score 会等于 25 ,但是实际上 score 等于 0 。这是因为score / 20 是整除,会得到⼀个整数值 0 ,所以乘以 100 后得到的也是 0

为了达到预想结果,我们可以改成这样:

#include <stdio.h>
int main()
{
 int score = 5;
 score = (score / 20.0) * 100;
 return 0;
}

5.2 %

运算符 % 表⽰求模运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数。

#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;//赋值,这⾥使⽤的就是赋值操作符

6.1 连续赋值

int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右向左依次赋值的。

6.2 复合赋值

#include<stdio.h>
int main()
{
  int a = 3;
  a = a + 10;
  a += 10;//复合赋值
  a = a - 4;
  a -= 4;//复合赋值
  printf("%d\n", a);
  return 0;
}

七、++、- -

++是⼀种⾃增的操作符,⼜分为前置++和后置++,–是⼀种⾃减的操作符,也分为前置- -和后置- -.

前置++

//计算口诀:先++,后使用
#incldue<stdio.h>
int main()
{
  int a = 5;
  int b = ++a;
    //a=a+1;b=a;
  printf("a=%d\n", a);//6
  printf("b=%d\n", b);//6
  return 0;
}

后置++

```c
//计算口诀:先使用,再++
#include<stdio.h>
int main()
{
  int a = 5;
  int b = a++;
  //b=a;a=a+1;
  printf("a=%d\n", a);//6
  printf("b=%d\n", b);//5
  return 0;
}

前置- -

//计算口诀:先--,后使用
#include<stdio.h>
int main()
{
  int a = 5;
  int b = --a;
  //a=a-1;b=a;
  printf("a=%d\n", a);//4
  printf("b=%d\n", b);//4
  return 0;
}

后置–

//计算口诀:先使用,再--
#include<stdio.h>
int main()
{
  int a = 5;
  int b = a--;
  //b=a, a=a-1
  printf("a=%d\n", a);//4
  printf("b=%d\n", b);//5
  return 0;
}

八、强制类型转化

int a = 3.14;//a的是int类型, 3.14是double类型,两边的类型不⼀致,编译器会报警告

为了消除这个警告,我们可以使⽤强制类型转换:

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

强扭的瓜不甜,不是迫不得已的情况下,最好不要强制类型转化,understand??

总结

本篇内容主要涉及了C语言的基础语法,不需要死记硬背,只需要经常敲代码,熟能生巧

目录
相关文章
|
2月前
|
存储 程序员 编译器
C 语言中的数据类型转换:连接不同数据世界的桥梁
C语言中的数据类型转换是程序设计中不可或缺的一部分,它如同连接不同数据世界的桥梁,使得不同类型的变量之间能够互相传递和转换,确保了程序的灵活性与兼容性。通过强制类型转换或自动类型转换,C语言允许开发者在保证数据完整性的前提下,实现复杂的数据处理逻辑。
|
1月前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
46 1
|
2月前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
81 12
|
2月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
79 8
|
2月前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
54 5
|
4月前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
79 1
|
4月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
4月前
|
存储 C语言
C语言:设置地址为 0x67a9 的整型变量的值为 0xaa66
在C语言中,可以通过指针操作来实现对特定地址的访问和赋值。要将地址为 0x67a9 的整型变量值设为 0xaa66,可以先定义一个指向该地址的指针,并通过该指针对该内存位置进行赋值操作。需要注意的是,直接操作内存地址具有一定风险,必须确保地址合法且可写。代码示例应考虑字节序及内存对齐问题。
|
4月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
27 0
|
4月前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型

热门文章

最新文章