局部变量、基本数据类型与表达式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28837389/article/details/82747025

目录

变量

局部变量

函数参数变量

基本变量类型关键字

定义函数局部变量

基本表达式

练习代码:


变量

  • 变量   ------>   一块内存的代号,每一个变量对应一块内存

                                     内存有多大

                                     内存存放什么类型的数据

  • C语言中使用变量的名字,能访问名字代号对应的内存,减少了开发难度
  • 定义变量语句   ------>   变量类型    变量名字[=初始化数据]   ------>   每一条语句都以分号结尾
  • 定义一个变量,同时分配一块内存   ------>   内存的名字就是变量的名字

局部变量

  • 变量定义在函数的内部
  • 变量只能在函数内部使用,函数调用结束后,变量就被收回   ------>   在return前就被收回了

             解析:当你返回局部变量时,是return拷贝了里面的值,没有错   ------>   返回地址就错了,因为被销毁了

函数参数变量

  • 变量作为参数定义在函数里,和局部变量一样参数变量在函数结束后也被收回
int add_func(int a,int b) {
    return    a+b;
}

基本变量类型关键字

有符号整数

  • 1个字节   ------>   char    变量名字,范围[-128,127]
  • 2个字节   ------>   short    变量名字,范围[-2^15, 2^15 - 1]
  • 4个字节   ------>   int    变量名字,范围[-2^31, 2^31 - 1]
  • 8个字节   ------>   long long    变量名字,范围[-2^63, 2^63 - 1]   ------>   GNU 编译器
  • 8个字节   ------>   __int64    变量名字,范围[-2^63, 2^63 - 1]   ------>   VC 编译器

无符号整数

  • 1个字节   ------>   unsigned    char    变量名字,范围[0,255]
  • 2个字节   ------>   unsigned    short    变量名字,范围[0,2^16 - 1]
  • 4个字节   ------>   unsigned    int    变量名字,范围[0, 2^32 - 1]
  • 8个字节   ------>   unsigned    long long    变量名字,范围[0, 2^64 - 1]   ------>   GNU 编译器
  • 8个字节   ------>   unsigned    __int64    变量名字,范围[0,2^64 - 1]   ------>   VC 编译器

小数

  • 4个字节   ------>   float    变量名字
  • 8个字节   ------>   double    变量名字

定义函数局部变量

  • 返回值   函数名字(参数1, 参数2) {      

                            代码语句1;       

                            代码语句2;       

                                ....       

                            定义变量语句; 类型  变量名字; 

                        }

  • return语句   ------>   return    值,如果没有返回值,就是void
  • 使用返回值   ------>   直接使用/变量保存返回值再使用

基本表达式

  • 变量 = 同类变量/常数值/同类的函数返回值
  • +, - * /    ------>   变量与变量,变量与常数
  • 括号      ------>   改变运算的优先级,括号有限
  • ++,--   ------>   ++在后面: 先参与计算,计算完成后再 + 1

                                 ++在前面:  先+1后再参与表达式计算

  • +=  -=   ------>   简洁美

练习代码:

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

// int 返回值 函数名称, 输入的参数1, 输入的参数2
int add_int(int lhs, int rhs) {
	int temp; // 定义在函数内的变量,局部变量;
	// 函数返回了以后,参数的变量也会被回收,
	return (lhs + rhs); // return之前会销毁这个变量所对应的内存;
}

// 函数结构: y = f(x) --> y 关于x的函数 f是对应法则 y = ax + b;
// 参数,函数名字,返回值;
// 【返回值的类型】 函数名字(参数1, 参数2) {
// }
// 函数返回值要和函数定义的返回类型是一致的;
int main(int argc, char** argv) {
	
	// 定义一个变量: 
	// (1)分配了4个字节大小的内存, 
	// (2)C语言里面使用这个变量的名字,能够访问这个内存;
	// (3)这个变量的内存,存放的是int类型的整数;
	int value = 0; // 赋值,给变量对应的内存写上一个数据值;

	// 赋值语句,往内存里面存数据
	// 把这个value这块内存存放上整形的数据7;
	value = 7;
	// 使用名字,访问内存数据
	printf("%d\n", value); // 读出的是变量名字--》内存--》存放的数据;

	// 定义了一个lhs的变量-->分配了内存(4个字节的)
	// 访问value变量的值-->存到lhs里面;
	// 变量的赋值,一定要是同类型,或者可以强制转换的类型;
	int lhs = value;
	printf("%d\n", lhs);

	// lhs --> 7 
	int rhs = 3;

	printf("%d\n", lhs + rhs); // --> 10
	printf("%d\n", lhs - rhs); // --> 4
	printf("%d\n", lhs * rhs); // --> 21
	printf("%d\n", lhs / rhs); // 7 / 3 = 2; // 除不尽的向下取整

	value = ((lhs + rhs) * lhs) + 7; // 括号能够改变我们的算术的优先级别
	printf("value = %d\n", value);
	// end 

	int a = 3; // 定义了4个字节的变量, 赋值为3;
	a += 1; // a = a + 1; // 简洁美

	// a = a + value; //
	a += value; // --> a = a + value;
	// 加减乘除

	a = 3;
	a *= 4; // a = a * 4;
	printf("a = %d\n", a);


	// ++, --
	a++; // a = a + 1;
	++a; // a = a + 1;
	// ? 区别是什么,单个是看不出区别的,只有在表达式里面使用;
	// 在前面的,是先++再参与表达式计算,在后面的是先参加表达式计算,再++;

	a = 3;
	printf("%d\n", (a ++) * 4); // --> 3 * 4 = 12 a ++ ; a = 4;
	printf("%d\n", (a) * 4);
	a++;


	a = 3;
	printf("%d\n", (++a) * 4); // --> 3 * 4 = 12 a ++ ; a = 4;
	a = a + 1;
	printf("%d\n", (a)* 4);
	
	a = add_int(3, 4) * 6;
	printf("%d\n", a);

	
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_28837389/article/details/82747025