c语言-----常识问题
目录
1.VS的C4996错误
由于微软在VS2013中不建议再使用C的传统库函数scanf,strcpy,sprintf等,所以直接使用这些库函数会提示C4996错误:
VS建议采用带_s的函数,如scanf_s、strcpy_s,但这些并不是标准C函数。
要想继续使用此函数,需要在源文件中添加以下指令就可以避免这个错误提示:
1)
#define _CRT_SECURE_NO_WARNINGS //这个宏定义最好要放到.c文件的第一行
2)
#pragma warning(disable:4996)//或者使用这个
2.头文件重复定义解决
为了解决这些问题,可以采用以下方法:
a.使用#ifndef指令和#define指令配合
使用#ifndef指令和#define指令配合,避免头文件被重复包含。通常在头文件开头处添加如下代码:
#ifndef HEADER_FILE_NAME_H
#define HEADER_FILE_NAME_H
// 头文件的内容
#endif // HEADER_FILE_NAME_H
这里的HEADER_FILE_NAME_H是一个唯一的宏名,用以标识该头文件。
b,#pragma once指令
使用#pragma once指令,这是一种非标准但广泛支持的预处理指令,用于保证头文件在编译过程中只被包含一次。将它放在头文件的最开始处:
#pragma once
// 头文件的内容
3.数据类型 占用空间
short、int、long、long long
short(短整型)2字节
int(整型)4字节
long(长整形)Windows为4字节,Linux为4字节(32位),8字节(64位)
long long(长长整形)8字节
4. 整型常量 所需类型
a。整型常量表示
10代表int类型
10l, 10L代表long类型
10ll, 10LL代表long long类型
10u, 10U代表unsigned int类型
10ul, 1b0UL代表unsigned long类型
10ull, 10ULL代表unsigned long long类型
b。整型常量输出
%hd输出short类型
%d输出int类型
%ld输出long类型
%lld输出long long类型
%hu输出unsigned short类型
%u输出unsigned int类型
%lu输出unsigned long类型
%llu输出unsigned long long类型
实例代码
#define _CRT_SECURE_NO_WARNINGS //这个宏定义最好要放到.c文件的第一行
#include <stdio.h>
int main()
{
short aa = 10;
int bb = 10;
long cc = 10l; //或者10L
long long dd = 10ll; //或者10LL
//short aa = 10;
//int bb = 10;
//long cc = 10;
//long long dd = 10;
printf("short aa = %hd\n", aa);
printf("int bb = %d\n", bb);
printf("long cc= %ld\n", cc);
printf("long long dd = %lld\n", dd);
unsigned short a2 = 20u;
unsigned int b2 = 20u;
unsigned long c2 = 20ul;
unsigned long long d2 = 20ull;
//unsigned short a2 = 20;
//unsigned int b2 = 20;
//unsigned long c2 = 20;
//unsigned long long d2 = 20;
printf("unsigned short a = %hu\n", a2);
printf("unsigned int b = %u\n", b2);
printf("unsigned long c = %lu\n", c2);
printf("unsigned long long d = %llu\n", d2);
printf("unsigned short a = %uh\n", a2); //err
printf("unsigned int b = %u\n", b2); //err
printf("unsigned long c = %ul\n", c2); //err
printf("unsigned long long d = %ull\n", d2); //err
return 0;
}
6.打印格式 含义
%d输出一个有符号的10进制int类型
%o(字母o)输出8进制的int类型
%x输出16进制的int类型,字母以小写输出
%X输出16进制的int类型,字母以大写输出
%u输出一个10进制的无符号数
实例代码
#define _CRT_SECURE_NO_WARNINGS //这个宏定义最好要放到.c文件的第一行
#include <stdio.h>
int main()
{
int a = 123;//定义变量a,以10进制方式赋值为123
int b = 0567;//定义变量b,以8进制方式赋值为0567
int c = 0xabc;//定义变量c,以16进制方式赋值为0xabc
printf("a = %d\n", a);
printf("8进制:b = %o\n", b);
printf("10进制:b = %d\n", b);
printf("16进制:c = %x\n", c);
printf("16进制:c = %X\n", c);
printf("10进制:c = %d\n", c);
unsigned int d = 0xffffffff; //定义无符号int变量d,以16进制方式赋值
printf("有符号方式打印:d = %d\n", d);
printf("无符号方式打印:d = %u\n", d);
printf("无符号方式打印(16进制):d = %x\n", d);
printf("无符号方式打印(16进制):d = %X\n", d);
int t = 0Xfbc;//定义变量c,以16进制方式赋值为0xabc
printf("有符号方式打印(16进制):t = %x\n", t);
printf("有符号方式打印(16进制):t = %X\n", t);
printf("有符号方式打印(10进制):t = %d\n", t);
printf("无符号方式打印(10进制):t = %u\n", t);
return 0;
}
printf函数和putchar函数
printf是输出一个字符串,putchar输出一个char。
printf格式字符打印格式:
打印格式对应数据类型含义
%d int 接受整数值并将它表示为有符号的十进制整数
%hdshort int短整数
%huunsigned short 无符号短整数
%ounsigned int无符号8进制整数
%uunsigned int无符号10进制整数
%x,%Xunsigned int无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF
%ffloat单精度浮点数
%lfdouble双精度浮点数
%e,%Edouble科学计数法表示的数,此处"e"的大小写代表在输出时用的"e"的大小写
%cchar字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
%schar * 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)
%pvoid *以16进制形式输出指针
%%%输出一个百分号
printf附加格式:
字符 含义
l(字母l)附加在d,u,x,o前面,表示长整数
-左对齐
m(代表一个整数)数据最小宽度
0(数字0)将输出的前面补上0直到占满指定列宽为止不可以搭配使用-
m.n(代表一个整数)m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度,用于说明输出的实型数的小数位数。对数值型的来说,未指定n时,隐含的精度为n=6位。
实例代码
#define _CRT_SECURE_NO_WARNINGS //这个宏定义最好要放到.c文件的第一行
#include <stdio.h>
int main()
{
int a = 100;
printf("a = %d\n", a);//格式化输出一个字符串
printf("%p\n", &a);//输出变量a在内存中的地址编号
printf("%%d\n");
char c = 'a';
putchar(c);//putchar只有一个参数,就是要输出的char
long a2 = 100;
printf("%ld, %lx, %lo\n", a2, a2, a2);
long long a3 = 1000;
printf("%lld, %llx, %llo\n", a3, a3, a3);
int abc = 10;
printf("abc = '%6d'\n", abc);
printf("abc = '%-6d'\n", abc);
printf("abc = '%06d'\n", abc);
printf("abc = '%-06d'\n", abc);
double d = 12.3;
printf("d = \' %-10.3lf \'\n", d);
return 0;
}
7.sizeof关键字
sizeof不是函数,所以不需要包含任何头文件,它的功能是计算一个数据类型的大小,单位为字节
sizeof的返回值为size_t
size_t类型在32位操作系统下是unsigned int,是一个无符号的整数
8.ASCII对照表
ASCII值控制字符ASCII值字符ASCII值字符ASCII值字符
0NUT32(space)64@96、
1SOH33!65A97a
2STX34"66B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39,71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92/124|
29GS61=93]125}
30RS62>94^126`
31US63?95_127DEL
ASCII 码大致由以下两部分组成:
- ASCII 非打印控制字符: ASCII 表上的数字 0-31 分配给了控制字符,用于控制像打印机等一些外围设备。
- ASCII 打印字符:数字 32-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。数字 127 代表 Del 命令。
9转义字符
转义字符含义ASCII码值(十进制)
\a警报007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\\代表一个反斜线字符"\"092
\'代表一个单引号(撇号)字符039
\"代表一个双引号字符034
\?代表一个问号063
\0数字0000
\ddd8进制转义字符,d范围0~73位8进制
\xhh16进制转义字符,h范围0~9,a~f,A~F3位16进制
10.除法和取余
#define _CRT_SECURE_NO_WARNINGS //这个宏定义最好要放到.c文件的第一行
#include <stdio.h>
int main()
{
printf("s1=%d\n", 9 / 4);//s1=2
printf("s2=%f\n", 9/ 4.0);//s2=2.250000
printf("s2=%f\n", 9.0 / 4); //s2=2.250000
//% 余数(取模)整型表达式% 整型表达式
printf("s2=%d\n", 9 % 4); //s2=1
return 0;
}
11。三目运算符
c = ( a > b ? a : b );
12.数组
按数组元素类型的不同,数组可分为:数值数组、字符数组、指针数组、结构数组等类别。
定义数组时[]内最好是常量,使用数组时[]内即可是常量,也可以是变量
在定义数组的同时进行赋值,称为初始化。全局数组若不初始化,编译器将其初始化为零。局部数组若不初始化,内容为随机值。
数组名是一个地址的常量,代表数组中首元素的地址。
int n = sizeof(a); //数组占用内存的大小,10个int类型,10 * 4 = 40
int n0 = sizeof(a[0]);//数组第0个元素占用内存大小,第0个元素为int,4
C语言中没有字符串这种数据类型,可以通过char的数组来替代
原文地址:https://blog.csdn.net/jie18894575860/article/details/145044078
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!