C语言(一) 初识C语言

C语言是最基础的语言,学好C语言,为学习其他语言打好了基础,今天我们来认识一下C语言。

首先,我们来认识一下第一个C程序:

#include <stdio.h>
int main()
{
   /*printf用于在标准输出上打印信息*/
   //printf用于在标准输出上打印信息
   printf("hello bit.\n");
   return 0;
}
C语言中main函数的程序的入口
    main函数的写法:

int main()
{
   return 0;
}
注意main函数的返回值类型为int
主函数中返回0.

注释
    C注释风格
         /*这是一个注释内容*/
可以注释多行,但是不能嵌套注释。
    C++注释风格
        //注释内容
可以嵌套使用

字符串
    

"hello bit.\n"
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String
Literal),或者简称字符串。


转义字符
看这段代码输出的是什么?
    

#include<stdio.h>
int main()
{
   printf("(are you ok ??)\n");
   return 0;
}
三字母词:
就是几个字符的序列,合起来表示另外一个字符。
三字母词可以使C环境可以在某些缺少一些必备字符的字符集上使用。

三字母词表示字符
??([
??)]
??<{
??>}
由于三字母词的引入是的正常的想输出:(are you ok??)这样的内容就困难了,这时
出现了转义字符。

转义字符:


数据类型:

char   //字符数据类型
short   //短整型
int   //整形
long   //长整型
long long  //更长的整形
float   //单精度浮点数
double   //双精度浮点数
     为什么出现这么多的类型?
     每种类型的大小是多少?

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>

int main()
{
	printf("%d\n", sizeof(char));   //1
	printf("%d\n", sizeof(short));    //2
	printf("%d\n", sizeof(int));    //4
	printf("%d\n", sizeof(long));  //4
	printf("%d\n", sizeof(long));   //4
	printf("%d\n", sizeof(float));   //4
	printf("%d\n", sizeof(double));   //8
	printf("%d\n", sizeof(long double));    //8
	system("pause");
	return 0;
}
结果如下:


常量:
我们发现生活中有些值是不发生变化的。
比如:圆周率,性别(?),身份证号码,血型等等。
那计算机中要miao’shu描述这些信息,就得一个不变的量来表示。这种值我们叫常量。
常量的分类
(1)字面常量
1, 3.14, ‘w’, '\n',
(2)const定义的常量

#include <stdio.h>
int main(void)
{
    int num = 0;
    const int c_num = 0;//const修饰标识符
    num = 20;
    c_num = 20;//ok?
    system("pause");
    return 0;
}
在C语言中,当const 修饰一个标识符的时候我们说,这个标识符依然是一个变量,但
是它具有常属性,不能被直接改变。
比如:
//test.c
#include <stdio.h>
int main()
{
   //int arr[需要一个常量];
   const int sz = 10;
   int arr[10];//ok
   int arr2[sz];//ok?
   system("pause");
   return 0;
}
补充:
在C++语言中,const修饰的标识符就是常量。
test.cpp
#include <stdio.h>
int main()
{
   //int arr[需要一个常量];
   const int sz = 10;
   int arr[10];//ok
   int arr2[sz];//ok?
   system("pause");
   return 0;
}
(3)#define定义的标识符常量
#include <stdio.h>
#define PAI 3.14
int main()
{
   int radius = 0;//半径
   double area = PAI*radius*radius;//圆面积的计算
   system("pause");
   return 0;
}
(4)枚举常量
枚举关键字:enum

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

这里的MALE,FEMALE,SECRET都是枚举常量。
变量
我们发现现实生活中很多的值是发生变化的。
比如:
你的身高,体重,成绩,年龄,薪资等等。
这些值又得一个变化的量来表示,在计算机语言中我们叫【变量】。

char c = 'w';
short s = 1;
int num = 0;
long age = 20;
float weight = 60.5;
double salary = 10000.00;
//上面定义的都是不同类型的变量
变量的命名规则
变量起名有一定的限制.
C 语言规定必须以字母或下划线 _ 开头,后面可以跟若干个字母、数字、下划线,但不
能有其它字符。
其实这个规则不仅适用于变量名,也适用于所有可以由程序员起名的语法元素,例如以
后要讲的函数名、宏定义、结构体成员名等,在C语言中这些统称为标识符(Identifier
)。另外要注意,表示类型的char、int、float、double等虽然符合上述规则,但也不能
用作标识符。在C语言中有些单词有特殊意义,不允许用作标识符,这些单词称为关键
字(Keyword )或保留字(Reserved Word)。通常用于编程的文本编辑器都会高亮
显示(Highlight)这些关键字,所以只要小心一点通常不会误用作标识符。C标准规定
的关键字有:
auto break case char const continue default do  double else enum extern float for goto if int  long register return short signed sizeof   static struct switch typedef union unsigned void   volatile while

变量的分类
变量根据出现的位置可以划分为:
(1)局部变量
(2)全局变量
变量出现在局部范围(代码块内部)内,称为局部变量。
如:

#include <stdio.h>
void test()
{
   int num = 0;//局部变量
}
int main()
{
   int num = 10;//局部变量
   return 0;
}
变量出现在所有代码块之外,称为全局变量,如:
#include <stdio.h>
int g_val = 2016;//全局变量
int main()
{
   printf("hehe\n");
   return 0;
}
(3)static修饰变量
变量可以被static修饰,意义有发生变化吗?
看个例子:
#include <stdio.h>
void test()
{
	int num = 0;
	num++;
	printf("%d\n", num);
}
int main()
{
	int i = 0;
	for (i = 0; i<10; i++)
	{
		test();
	}
	return 0;
}

结果如下:


如果test函数中的num被static修饰,将会怎样?
#include <stdio.h>
void test()
{
	static int num = 0;
	num++;
	printf("%d\n", num);
}
int main()
{
	int i = 0;
	for (i = 0; i<10; i++)
	{
		test();
	}
	return 0;
}

结果如下:


变量的初始化、赋值
1、初始化:创建变量的同时给一个初始值。
int num = 10;//创建变量a,并且给一个初始化的值是10.
num = 20;//当num已经存在,这里给他一个其他值得时候叫赋值。
表达式求值和表达式的属性
在C语言中我们写代码经常会写一些表达式,如:实现两个整数的加法。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int x = 10;
	int y = 20;
	int sum = x + y;
	system("pause");
	return 0;
}
这里我们称:x + y为一个表达式。将x+y的结果赋值给sum,这里必学将x和y的计算出
来(表达式的求值)。求值结果是否能赋值给sum,我们必须关注表达式的两个属性:
值属性和类型属性。
表达式求值
表达式的求值和运算符有关系。
int x = 1;
int y = 2;
int sum = 0;
sum = x+y;
sum = x*y;
sum = (x+y)*10;
关心求值顺序和计算结果。
表达式属性
1、值属性
决定了计算的结果是多少。上面的代码x+y ,产生的结果是3(值属性)。

2、类型属性
决定了表达式的值能否复制给其他变量。上面代码中表达式x+y ,产生结果的类
型是int,所以可以很好的赋值给sum这个整形的变量。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值