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语言的基础语法,不需要死记硬背,只需要经常敲代码,熟能生巧

目录
相关文章
|
30天前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
38 1
|
1月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
1月前
|
存储 C语言
C语言:设置地址为 0x67a9 的整型变量的值为 0xaa66
在C语言中,可以通过指针操作来实现对特定地址的访问和赋值。要将地址为 0x67a9 的整型变量值设为 0xaa66,可以先定义一个指向该地址的指针,并通过该指针对该内存位置进行赋值操作。需要注意的是,直接操作内存地址具有一定风险,必须确保地址合法且可写。代码示例应考虑字节序及内存对齐问题。
|
1月前
|
C语言
3.4 C语言基本数据类型2
在C语言中,声明一个整型(int)变量时,需先写入&#39;int&#39;关键字,后跟变量名并以分号结尾。若同时声明多个变量,可在&#39;int&#39;后用逗号分隔列出所有变量名。例如,`int erns;` 或 `int hogs, cows, goats;` 都是合法声明。变量声明后需通过赋值语句如 `cows = 112;` 或使用函数如 `scanf()` 来初始化其值。
44 10
|
1月前
|
存储 程序员 C语言
3.1 C语言基本数据类型
在C语言中,整数类型如`int`类型是很有用的,它属于有符号整型,意味着该类型的值必须是整数,并且可以是正整数、负整数或者零。`int`类型的数值范围依据计算机系统有所不同,通常取决于系统的位宽。例如,在早期16位的IBM PC兼容机上,`int`类型使用16位存储,取值范围为-32768至32767;而在当前32位系统中,使用32位存储,拥有更宽泛的取值范围。随着64位处理器的普及,`int`类型能够存储的整数范围将进一步扩大。根据ISO C标准,`int`类型的最小取值范围被规定为-32768到32767。系统通常会利用一个特殊的位来表示整数的正负。
34 10
|
1月前
|
C语言
3.1C语言基本数据类型
在C语言中,初始化变量是指为变量设定初始值,通常在声明时直接完成,例如 `int cows=32;`。应注意避免在同一语句中混合初始化与未初始化的变量,如 `int dogs, cats=94;` 这样的写法容易引起误解。此外,整型常量如21、32等在C语言中被视为int类型,但非常大的整数则不然,且带有小数点或指数的数值不属于整型常量。
27 9
|
1月前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
15 0
|
1月前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型
|
1月前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
19 0