使用C语言第一天

欢迎使用C语言

大家好! 这是我第一次学习C语言。如果你想学习如何使用C语言, 可以仔细阅读这篇文章,有兴趣的挚友可以在文章后面进行留言。

字符常量

转义符’‘后面接一个八进制数,一般是三位数以0开头,用于表示ASCII码等于该值的字符;十六进制与八进制同理用于表示ASCII码等于该值的字符,一般以x开头。八进制中只有“0-7”,十六进制中“0——9和 A|a——F|f”。当然也有固定的通用字符如(’\u02C0’表示的是?),上述所讲皆为字符常量。接下来再讲几个转义序列:

  1. \\ ,在vs2008表示的是\;
  2. \’ ,在vs2008表示的是’;
  3. \" ,在vs2008表示的是";
  4. \? ,在vs2008表示的是?;
  5. \a ,在vs2008直观上看的是空格,表示的含义是警报铃声;
  6. \b ,在vs2008直观上来说是删除前面一个字符,表示的含义是退格键;
  7. \f ,在vs2008直观上来看是一个向上的箭头,表示的含义是换页符;
  8. 当然大家最常用的是 \n,表示的是换行;
  9. \r ,在vs2008直观上来看是删除了前面的输出,表示的含义是回车;
  10. \t ,在vs2008中相当于一个table键,表示的含义是水平制表符;
  11. \v ,在vs2008直观上来看是一个方框,占用两个字节,表示的含义是垂直制表符;

输出字符串常量

Demo:
输出“hello,world”。
第一种printf(“hello,world”);
第二种可以在括号里增加成对引号,例如printf(“hello,“w”orld”);
第三种最为符合这么一种规律,当一行写不完程序时,请在语句中使用\,例如
printf(“hello,
world”);

新发现

1.printf(“\n”)等价于printf("%c",’\n’)。
2.在头文件后#define a 10,相当在main函数里const int a=10;
在头文件后#define a ‘b’,相当在main函数里const char a=‘b’;
3.printf("%c,%c,%c,%c",0103,’\103’,’\x43’,‘C’);
解释:前面两种是八进制,第三种是十六进制的转义字符,第四种是直接输出。

const与define

	const 定义的是变量不是常量,只是这个变量的值将会定死。const带有类型,编译运行起作用时,存在类型检查。

define 定义的是不带类型的常数,只进行简单的字符替换。在预编译的时候起作用,不存在类型检查。

1、两者的区别
(1) 编译器处理方式不同
#define 宏是在预处理阶段展开。
const 常量是编译运行阶段使用。
(2) 类型和安全检查不同
#define 宏没有类型,不做任何类型检查,仅仅是展开。
const 常量有具体的类型,在编译阶段会执行类型检查。
(3) 存储方式不同
#define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。(宏定义不分配内存,变量定义分配内存。)
const常量会在内存中分配(可以是堆中也可以是栈中)。
(4) const 可以节省空间,避免不必要的内存分配。
const 定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define 一样给出的是立即数,所以,const 定义的常量在程序运行过程中只有一份拷贝(因为是全局的只读变量,存在静态区),而 #define 定义的常量在内存中有若干个拷贝。
(5) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
(6) 宏替换只作替换,不做计算,不做表达式求解;宏预编译时就替换了,程序运行时,并不分配内存。
(考试朋友了解一下)
define注意“边缘效应”,说白就是define里面按照优先级执行。

单引号和多引号的区别

单引号:单引号引注是一个字符,char类型,这个字符对应的是ASCII表中的序列号。
多引号:在 C 语言中没有专门的字符串类型,因此双引号内的字符串会被存储到一个数组中,这个字符串代表指向这个数组起始字符的内存单元的地址。

三元运算符

最直观的描述
((a>b?a:b)>c)?(a>b?a:b):c;这一句三个数比大小
首先看中间先判断a和b哪个大;
如果a大,a再跟c比较,如果a是三个数中最大的,输出a。
否则输出c。
同理 如果b大,b再跟c比较,如果b是三个数中最大的,输出b。
否则输出c。
这样就确保这三个数选出最大的数。
今天到此为止,明天继续,欢迎留言。

猜你喜欢

转载自blog.csdn.net/qq_31932681/article/details/94177304