初识C语言(3)变量,常量,注释

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 初识C语言(3)变量,常量,注释

变量

C语言中变量有局部变量全局变量

全局变量

在函数外面定义的变量称为外部变量,也称为全局变量。它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。不过需要注意的是,在其他.c文件中使用需要用extern来声明。

hehe.c文件中
int Global_variable;
main.c文件中使用Global_variable
extern int Global_variable;
int main()
{
}


局部变量

定义在函数内部的变量称为局部变量,它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。

int main()
{
    int Local_variable;  //Local_variable仅在函数main()内有效
    return 0;
}


全局变量和局部变量同名

若在函数的内部存在一个与全局变量同名的局部变量,编译器不会报错,而是局部变量优先使用。

#include <stdio.h>
int global = 2019;//全局变量
int main()
{
    int local = 2018;//局部变量
    int global = 2020;//局部变量
    printf("global = %d\n", global);
    return 0;
}


最后这个代码打印出来的是

表明与全局变量同名的局部变量,是局部变量优先使用。

变量的创建与赋值

当我们创建了一个变量的时候,可以进行赋值初始化,也可以不进行初始化。

注意

1,在许多编译器中,如果变量在创建的时候没有初始化,编译器会自动给该变量赋值为0。但是有一部分编译器,如果创建了变量没有初始化,之后也没有赋值使用会进行报错。

2,如果两个变量都是同一类型,可以写在同一行同时创建。


//分开创建变量
int a=1; //创建了变量a,并且在a中赋值为0
int b;   //创建了变量b,没有赋值
//放在同一行创建变量,注意中间有一个英文的逗号
int a = 1, b;
int b, a = 1; //三种写法都可以
int main()
{
  int a = 1, b;
  printf("a= %d  b=%d \n", a, b);  //注意,有些编译器会报错,说b没有被赋值,但是有些又可以。
  return 0;
}

变量使用

这里就是利用scanf函数,让我们利用电脑键盘输入数据给这个变量。

#include <stdio.h>
int main()
{
  int num1 = 0;
  int num2 = 0;
  float num3 = 0;
  char  num4 = '0';
  char  num5[10] = {0};
  printf("输入两个操作数:>");
  scanf("%d %d",&num1,&num2);
  printf("sum1 = %d    sum2 = %d\n", num1,num2);
  printf("一个浮点数据:>");
  scanf("%f",&num3);
  printf("sum3 = %f",num3);
  getchar();
  printf("\n");
  printf("一个字符:>");
  scanf("%c", &num4);
  printf("sum4 = %c", num4);
  getchar();
  printf("\n");
  printf("一个字符串:>");
  scanf("%s", num5);
  printf("sum5 = %s", num5);
  return 0;
}


输出结果


注意:

1,这里是int型数据,所以用%d,如果是float型数据用%f,char型数据用%c,字符串用%s

2,num5那个地方没有使用&。是因为num5是一个数组,而单独的num5表示数组的首地址,是一个指针。后面会讲。


常量

字面常量

字面常量就算直接写出来的固定值,他分为整型常量字符常量

int main()
{
     //字面常量演示
    3.14;//字面常量
    1000;//字面常量
}


const 修饰的常变量

当有const修饰的变量,他的值是无法被改变的。

int main()
{
  const float pai = 3.14;   //这里的pai是const修饰的常变量
  const float pa;   //这里的pai是const修饰的常变量,若不初始化,变量将永远没有机会拥有状态。
  //pai++;
  //pai = 5.14;//是不能直接修改的!
  return 0;
}


这里有一个要注意的点,const修饰的常变量必须初始化(就是赋值pai=3.14)。否则他永远不可能拥有数值。


这个时候有人会有疑惑,既然const修饰的常变量无法被更改,有什么用呢?打个比方,我们现在创建了两个变量,一个是pai,另外一个是pa。我们要利用pai求圆面积。因为工程中有两个变量,如果不小心把pa打成了pai,然后将其改变了数值。那样会导致求出来的圆面积有问题。


这个时候就又会问了,那我不把第二个变量做成pa不久可以了吗?因为大规模工程中有很多变量,我们时常是直接复制粘贴的,有时候我们复制粘贴错了,但是有没有注意到也是有可能的。这样也会导致出现问题。加上const之后,系统会帮助我们检查。


#define 定义的标识符常量

#define(宏定义),宏定义是非常有用的一个句子,作为一名嵌入式工程师,写程序的时候一定会大量的使用宏定义。因为有了宏定义之后,我们进行移植就会非常简单。看下面代码

#include <stdio.h>
#define MAX 100
int main()
{
  printf("max = %d\n", MAX);
  return 0;
}

这里我们将MAX宏定义了,现在MAX代表100,代码中每次出现MAX,系统都会认为MAX就是100。如果我们每次想打印一个数值,只需要在最上面#define后的数即可。


注意:#define之后不能加上;。因为#define   x   y   就是把x完完全全等效成y。如果加上了;,那么就相当于直接在程序中加了;

#include <stdio.h>
#define MAX 100;//错误!!!
int main()
{
  printf("max = %d\n", MAX);
  return 0;
}

枚举常量

#include <stdio.h>
enum Sex
{
  MALE,
  FEMALE,
  SECRET
};
int main()
{
  printf("%d\n", MALE);
  printf("%d\n", FEMALE);
  printf("%d\n", SECRET);
  return 0;
}


枚举常量的详解

枚举常量需要注意的地方:

1,不可以对对枚举变量赋值,只能将它们的值赋给其他变量。

2,不能在定义与枚举常量相同名字的变量

3,不能用&取得他们的地址


注释

注释,意思就是编译器不会编译,作用就是作为给程序员的一种提示或者提醒。因为很多时候,我们现需要接手别人的代码,当别人在自己的代码上写上注释,方便他人快速理解。C语言中有两种注释,一种为//,另外一种为/**/


//详解

//就是把他同一行的后面所有东西给注释掉。

//这里被注释了
这里没有被注释
这里没有被注释 //这里被注释了


/**/详解

/*内容*/,就是把/**/所包含的所有内容给注释掉。/*会寻找最近的*/进行匹配。

/*这里被注释了
这里被注释了
这里被注释了
这里被注释了*/
/*这里被注释了
这里被注释了
这里被注释了*/
这里没有被注释*/
相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
目录
相关文章
|
26天前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
47 12
|
1月前
|
存储 算法 C语言
【C语言】字符常量详解
字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。
166 11
|
1月前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
45 7
|
1月前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
38 5
|
1月前
|
C语言
【C语言】<常量> 之群英荟萃
在C语言中,常量(Constants)是指在程序运行过程中其值不能被修改的固定值。常量包括数值常量(整型和浮点型)、字符常量、字符串常量、使用const关键字定义的常量变量以及枚举常量。
33 4
|
1月前
|
编译器 C语言
【C语言】常量的 “前缀和后缀” 大通关!
在C语言中,常量的前缀和后缀用于明确指定常量的类型和进制系统。前缀主要用于区分不同进制的数字常量,而后缀则用于区分不同类型的整数和浮点数。正确使用前缀和后缀,可以提高代码的可读性和可维护性,确保编译器正确地理解和处理常量。
41 1
|
3月前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
60 1
|
3月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
C语言
《C语言编程初学者指南》一2.6 理解常量
本节书摘来自华章出版社《C语言编程初学者指南》一书中的第2章,第2.6节,作者【美】Keith Davenport(达文波特) , M1ichael Vine(维恩),更多章节内容可以访问云栖社区“异步社区”公众号查看 2.6 理解常量 常量(constant)数据类型通常也叫做只读变量,在程序执行中,它们不会丢失其数据值。
1551 0
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
68 10