初识C语言——阶段性小结

Posted cxy_zjt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识C语言——阶段性小结相关的知识,希望对你有一定的参考价值。

都是一些大致概括性知识 让我们对c有一个初步认识,

没有详细展开赘述。

一、什么是C语言

 二、第一个C语言程序

三、数据类型

四、变量、常量 字符串+转义字符+注释

一、什么是C语言

C语言是一门通用计算机编程语言,广泛应用于底层开发.........

我们将编程比作是一栋大厦,c是地基,要想大厦屹立不倒,地基切忌操之过急!

二、第一个C语言程序

对于大多数人而言是"hello world"

但我希望

#include<stdio.h>
int main() {
	printf("我们是最棒的!\\n");
	return 0;
}

 这是一种自我激励,也是鞭策。

送给大家一句话:欲戴其冠,必承其重!

三、数据类型

char        //字符数据类型              

short       //短整型                    

int         //整形                            

long        //长整型                  

long long   //更长的整形            

float       //单精度浮点数             

double      //双精度浮点数            
//C语言有没有字符串类型? 

C 语言虽然没有字符串类型,但是 C语言提是存在字符串这个概念的,也就是字符串常量。

1、char 字符类型

注:表示字符要加单引号   eg:char =  'z'

#include<stdio.h>
int main() {
 char w = 'z';
 printf("%c\\n", w);
 return 0;
}

 

 

上述代码只是一个很简单的例子

那么下面一个呢? 

#include<stdio.h>
int main() {
 char w = 'zjt';
 printf("%c\\n", w);
 return 0;
}

还是输出 “z”吗?

 

 因为在x86平台上,数据是以little-endian 的形式排列的,低位字节放在内存的低地址,高位字节放在内存的高地址。我们看'1234',从左到右从1到4,然而在计算机中存放的格式是从0x04到0x01,就是说'1234'的低位4存放在计算机的内存低地址位,'1234'的高位1存放在内存的高地址位,所以当把'1234'给变量a时,系统把内存中的地址中存放的4给a,其余的全部不要了。

ASCII码的打印

#include<stdio.h>
int main() {
	char w = 98;
	printf("%c\\n", w);
	return 0;
}

 上述是数字->字符

那么字符到数字呢?

#include<stdio.h>
int main() {
	int w = 'a';
	printf("%c\\n", w);
	return 0;
}

 2、整型

处理不同数据的时候需要不同的变量范围。

各个类型的大小都不同

#include<stdio.h>
int main() {
	printf("%d\\n", sizeof(char));
	printf("%d\\n", sizeof(int));
	printf("%d\\n", sizeof(long));
	printf("%d\\n", sizeof(long long));
	printf("%d\\n", sizeof(float));
	printf("%d\\n", sizeof(double));
	printf("%d\\n", sizeof(long double));
}

 至于整形的其他本质不同  博主会在后续的文章中探讨  这里只是对自己一个月自学的简单小结。

3.浮点型

常见 float与double后期还会学习其他的浮点类型 。在这不做过多阐述

二者的区别主要是精度表示不一样float的类型至少能表示六位有效数字,double类型至少能表示视为有效数字,但若不加特殊说明,c编译器会直接把float类型转化成double类型。

#include<stdio.h>
int main()
{
	float a = 5.5;
	double b = 6.1;
	printf("%f\\n", a);
	printf("%f\\n", b);
	return 0; 
}

 

 通过上面代码我们可以了解到,无论是float 还是double,小数点后面数字位数都相等 

但是取几位有效数字怎么做呢?

#include<stdio.h>
int main()
{
	float a = 2.2;
	double b = 2.4;
	printf("%.3f\\n", b);
	printf("%f\\n", a);
	printf("%.2f\\n", a);
	printf("%.1f\\n", a);
	printf("%.3f\\n", a);
	printf("%.4f\\n", a);

	return 0;
}

 

 可以很清晰的看出“.Xf “那么小数点后就是几位有效数字

用%e打印指数记数法的浮点数

#include<stdio.h>
int main() {
	double a = 18232.321;
	printf("%e\\n", a);
	return 0;


}


 

 浮点型还有许多其他知识,待博主详细学完后再来更新,目前知识大致的写一下。

 四、变量、常量 字符串+转义字符+注释

变量的定义:

char ch = 'w';

int weight = 120;

int salary = 20000;

变量的分类有局部变量,全局变量。

#include <stdio.h>
int global = 2019;//全局变量
int main()
{
    int local = 2018;//局部变量//下面定义的global会不会有问题?
    int global = 2020;//局部变量
    printf("global = %d\\n", global);
    return 0;
}

 上面的局部变量global变量的定义其实没有什么问题的!

当局部变量和全局变量同名的时候,局部变量优先使用

常量

有如下四种:1、字面常量   eg:3.14

                                                     100

                                                      ‘abc’   等

                      2、const修饰的常变量

  

#include<stdio.h>
int main() {
	int a = 10;
	printf("%d\\n", a);
	a = 20;
	printf("%d\\n", a);
	return 0;

 

#include<stdio.h>
int main( ){
	const  a = 10;
	printf("%d\\n", a);
	a = 20;
	printf("%d\\n", a);
	return 0; 
}

第二个代码无法编译 

因为有const 修饰变量指的是 虽然它还是变量,但是它的值是一个常量,无法被更改。(个人理解)

                3、//#define的标识符常量          

         

#include<stdio.h>
#define MAX 100

int main() {
	printf("%d\\n", MAX);
	return 0;
}

           4、 //枚举常量演示

             

enum Sex
{
	//枚举这种类型的可能取值 - 就是枚举常量
	MALE,
	FEMALE,
	SECRET
};
#include<stdio.h>
int main() {
    printf("%d\\n", MALE);
    printf("%d\\n", FEMALE);
    printf("%d\\n", SECRET);
	return 0;
}

 //注:枚举常量的默认是从0开始,依次向下递增1的

字符串:用双引号引起来  eg:”aj“    ”sad“   ”dada“等

注:字符串的结束标志是一个 \\0 的转义字符。在计算字符串长度的时候 \\0 是结束标志,不算作字符串内容(即不用敲)

#include<stdio.h>
int main() {
	char zjt[] = "abcd";//字符串1
	char dy[] = { 'a','b','c','d' };//字符串2
	char dsg[] = { 'a','b','c','d','\\0' };//字符串3
	char dagg[5]= { 'a','b','c','d' };//字符串4
	printf("%s\\n%s\\n%s\\n%s\\n", zjt, dy, dagg,dsg);
	return 0;
}

 

 我们来分析一下上述代码,仔细观察一下,字符串2与字符串3只相差一个‘\\0'   

在字符串中'\\0'表示的是结束输出,所以字符串2在输出abcd后继续在缓存区输出,直到找到’\\0'为止。

而其他三种的正确表示方法都是我目前所了解的 后续如果还有其他方法会在未来的博客中持续更新。

为了让读者加深一步理解——我们可以通过测字符串的长度分析

#include<stdio.h>
#include<string.h>
int main() {
	char zjt[] = "abcd";//字符串1
	char dy[] = { 'a','b','c','d' };//字符串2
	char dsg[] = { 'a','b','c','d','\\0' };//字符串3
	char dagg[5]= { 'a','b','c','d' };//字符串4
	printf("%s\\n%s\\n%s\\n%s\\n", zjt, dy, dagg,dsg);
	printf("%d\\n%d\\n%d\\n", strlen(zjt),strlen(dy),strlen(dsg));

	return 0;
}

 

#include<stdio.h>
int main() {
	char arr1[] = "abc";//代码1
	char arr2[] = { 'a','b','c' };//代码2
	printf("%s\\n%s\\n", arr1, arr2);
	return 0;
}

我们可以通过监视器观察到 代码1虽然没有敲‘\\0'      但实际上是输入了\\0的

通过这个就大致可以理解上面字符串长度了

转义字符:

转义字符顾名思义就是转变意思。

转义字符 释义

\\? 在书写连续多个问号时使用,防止他们被解析成三字母词

\\' 用于表示字符常量

' \\“ 用于表示一个字符串内部的双引号 \\\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。 \\a 警告字符,蜂鸣

\\b 退格符

\\f 进纸符

\\n 换行

\\r 回车

\\t 水平制表符

\\v 垂直制表符

\\ddd

ddd表示1~3个八进制的数字。 如: \\130 X

\\xdd dd表示2个十六进制数字。 如: \\x30 0

我们可以做一个趣味性的题目

测试:c:\\test\\628\\test.c.ca\\nasm的长度

上代码

#include<stdio.h>
#include<string.h>
int main() {
	char arr[] = "c:\\test\\628\\test.c.ca\\nasm";
		printf("%d\\n", strlen(arr));
	return 0;

}

 在测量字节长度是转义字符算一个字节

注释:1. 代码中有不需要的代码可以直接删除,也可以注释掉

           2. 代码中有些代码比较难懂,可以加一下注释文字

C语言风格的注释 /*xxxxxx*/ 缺陷:不能嵌套注释

C++风格的注释 //xxxxxxxx 可以注释一行也可以注释多行

第一次写这种博客,还有许多不足之处,但创作不易,还请大家多多支持!

以上是关于初识C语言——阶段性小结的主要内容,如果未能解决你的问题,请参考以下文章

入门C语言——初识C语言

入门C语言——初识C语言

入门C语言——初识C语言

入门C语言——初识C语言

入门C语言——初识C语言

入门C语言——初识C语言