入门第3天.昨天因为高考出分,暂缓了一下。
今天来学习常量变量的一些基础知识。
在日常生活中有如血型、圆周率等一些固定的无法改变的数据,也有像工资、年龄、体重等一些可以变的数据。
而对应在c语言中不能改变的量也就是常量,能改变的量就是变量(废话)
如何创建变量?
举个例子,比如我想说一个人的年龄。
在主函数内写上int age = 20;即可。
这里的int指的是变量的类型,也就是整型,因为后面是整数。
age指的是变量的名字,名字可以随意改变,习惯性用要表示变量名称的英文作为其变量名。
=是赋值的意思
这里就是把变量名age赋值为20
注意一下,在c语言中这里一般是从右往左看。所以应该将其视为把20这个值放入age这个变量中去,后续还有一些情况,也只有从右往左读才能理解的通。
当然也可以不赋值,这不违背c语言语法,但是不推荐。一般最好写出一个变量后都要赋值。
如果想要赋值为小数的话,那就用double或float浮点数作为变量类型即可。
以上就是变量的创建。
那变量意味着什么呢?变量意味着可改。
比如说人的年龄每过一年都会增加1,这也就是变量的可改,那我们就试着把这个表示出来。
模仿借鉴一下数学中的递推思想,也就是常见的等差数列。
表示为:
这里其中第5行age = age+1;的意思就是在原本age变量名被赋值为20的情况下,再加上1
然后再用printf将其打印出来,最终得到的运行结果就是21
注意这里不能直接printf("age"),系统将会自动理解为将age这个单词打印出来,而不是将变量赋值的结果打印出来。
加减乘除都可以,只要改变运算符号与数字即可.
整型打印用%d ,而浮点型float用%f,double用%lf
变量分类:分为局部变量和全局变量
在大括号内的变量都叫局部变量。
而在大括号外的变量叫做全局变量。
如图:
还有一种特殊情况。
当局部变量与全局变量名次冲突的情况下,局部优先。
假设全局变量与局部变量变量名都为a,但两者赋值不同。
运行出来的结果是局部变量的赋值结果。
当然,不建议在写代码时把全局变量与局部变量的变量名写为一样。
下面来试着理解一下求两个整数之和的这一段代码。
首先第6行是一个新函数scanf,是输入函数的意思由于这个地方需要输入a,b两个值,而且是int类型所以需要两个%d,中间用空格隔开也表示这是两个量
&是取地址符,。。看不懂暂不重要,&a表示把第1个空对应的值赋到a,同理&b对应第二个空。意思就是分别把值放到a和b里面去存储起来。
第7行是运算,定义sum=a+b也即输入a加b的结果,自动通过printf输出sum的值。
第345行,int 啥 = 0,是设定一个初始值,以此来进行后续操作,因为如果不初始化的话,首先系统可能会报错,其次程序将认定这个变量是一个随机数,从而不清楚其在运算过后的结果。
如果用devc++或者c complier来跑这个程序,是没有任何问题的。但是在学习过程中,如果使用的是windows的VS2019/2013,那么他就会报错,出现以下页面。
软件认为使用scanf有安全性问题。给出了两种解决方案。
一种就是使用scanf_s替代原来的输入函数。实际上也不推荐这么做,因为scanf_s是VS自己提供的一个函数,而不是c语言中规定的。也就是说如果你要用这个的话,只有在vs上面才能跑出来,其他的编译器应该都不行。
比如C complier我就试了一下,报错了。
要么就把_CRT_SECURE_NO_WARNINGS 1这一大坨东西放在所有代码的第1行,也就是确认该软件认定的这个函数没有问题才能运行并不报错。
也就是说如果执意要使用scanf的话,需要在第一行这么写:
#define _CRT_SECURE_NO_WARNINGS 1
即可。一定是要在源文件所有代码的第1行。
但也有人会说每一次源文件都要在开头放一个这个东西是不是有点太繁琐了,还是有一种解决方法的。
如果你使用的是vs2013,那么先去找一下vs2013的安装路径,按照图中的上面画横线的这个路径去找到底下画框的这个文件:newc++file.cpp
然后在里面直接把之前的第1行#define _CRT_SECURE_NO_WARNINGS 1放进去并保存即可。
如果使用的是vs2013的话,那么以后每次新建的源文件开头第1行就默认为这句话。
Vs2019的话实际上也差不多。
先找到他的文件位置。
然后再找到对应的文件newc++file.cpp,当然可以在大致的一个位置里面直接进行文件搜索。
然而直接进去编辑并保存的话,可能它会提示你权限不够。那就是进入的方式有问题,需要这么进入:
或者也可以直接用上面的Edit with Notepad++
也可以直接把记事本打开,以管理员身份运行,再在记事本中打开newc++file.cpp文件并把刚才那段话放进去,保存以后重新运行vs2019,开头的第1行就自动为刚才的那一段话了。
好了,以上就是今天的学习内容。更多深入内容的话,明天继续~