C语言——基础部分

无符号整型的取值范围是0-65535(2^16-1),有符号整型的取值范围是-32768——+32767(-2^8——2^8-1)

/*
 *L&U可以是小写
*/
num=100L    //L表示长整型
num=100U    //U表示无符号整型
num=0123    //0用来表示八进制,所有数字均需小于8
num=123    //十进制数不需要添加前缀
num=0x123    //0x十六进制,十六进制由0-9、A-F组成
/*数据以二进制的方式存放在计算机中,数值是以补码的形式存储的,
 *正数的补码为原码,负数的补码其绝对值为按位取反再加1*/
/*
 *有符号数第一为符号位,0为负1为正
*/
num=10e2    //表示10的平方
num=123f    //单精度类型
num=123L    //长双精度类型    如果不添加默认为双精度类型
char a = 'a';    //字符型常量

存储字符串常量时,系统会为字符串后面自动添加“\0”作为结束符,长度为1

C语言——基础部分_第1张图片

符号常量:程序开头用define定义      格式:#definr num 10

signed int num;    //有符号整型
unsigned int num;    //无符号整型
long double num;    //长双精度变量
char c = 'a';        //字符型变量

C语言——基础部分_第2张图片

变量的存储类型:静态static、寄存器register、外部extern、自动auto。

auto int num = 1;    //自动存储类型
static int num = 1;    //静态存储类型
register int num = 1;    //寄存器变量
extern int num = 1;    //外部存储变量

auto关键字用于定义一个局部变量为自动的,每次执行到该变量时,都会产生一个新的变量,并对其重新进行初始化。局部变量的存储方式默认为自动的。

static变量为静态变量,在语句执行期间,static变量始终保持它的值,初始化操作只在第一次执行时起作用,在运行过程中,变量保持语块上一次执行的值。

register变量,将局部变量存储到寄存器中,提高程序运行速度

 

 

强制类型转换

float i = 10.1f;
int j = (int)i;

算数运算符:两个单目运算符(正负)+5个双目运算符(加减乘除取余)

两个整数相除结果为整数,如7/4=1,舍去的是小数部分,若其中一个为负数时,采取“向零取整”的方法,7/-4=-1,取整后向零靠拢。

当算数运算符的优先级相同时,采用 自左向右结合的方式进行运算。

赋值运算符:=       等于运算符:==

逻辑运算符!!将变量的数值转化为相应的逻辑真值或假值。

value = 2+5,3+1,5+7;       //value=7
value = (2+5,3+1,5+7);        //value=12
/*
 *()运算的优先级高于,
*/
printf("%d",~-15);    //14
printf("%d",~15);       //-16
/*
 *正数取反添负号加一,负数取反为正减一
*/

C语言——基础部分_第3张图片

字符输入输出函数

putchar();    //字符输出函数,参数可为字符型
getchar();    //字符输入函数,无参

//字符输入输出示例
getchar();
putchar(getchar());

char a = getchar();
putchar(a);

putchar(getchar());    //不会执行,无法输入输出字符

//字符串输入输出示例
int main()
{
    char* ch = "I LOVE";
    puts(ch);
    puts("I \0LOVE");
    ch = "I love you \0little baby";
    puts(ch);
}
//\0作为结束符
int main()
{
    char str[30];
    gets(str);
    puts(str);
    //puts(gets());    //错误语法
}

puts(char *str);        //字符串输出函数,参数为指针字符变量,以\0作为结束符,会自动换行
gets();        //字符串输入函数,会自动换行

PRINTF 格式化输出符号详细说明

%a           浮点数、十六进制数字和p-记数法(C99)
%A   浮点数、十六进制数字和p-记法(C99)
%c   一个字符(char)

%C          一个ISO宽字符

%d    有符号十进制整数(int)(%ld、%Ld:长整型数据(long),%hd:输出短整形。) 

%e    浮点数、e-记数法
%E    浮点数、E-记数法
%f     单精度浮点数(默认float)、十进制记数法(%.nf  这里n表示精确到小数位后n位.十进制计数)

%g    根据数值不同自动选择%f或%e.
%G   根据数值不同自动选择%f或%e.
%i             有符号十进制数(与%d相同)
%o   无符号八进制整数
%p   指针
%s   对应字符串char*(%s == %hs == %hS 输出 窄字符)

%S          对应宽字符串WCAHR*(%ws == %S 输出宽字符串)

%u      无符号十进制整数(unsigned int)
%x    使用十六进制数字0f的无符号十六进制整数 
%X      使用十六进制数字0f的无符号十六进制整数
%%     打印一个百分号

%I64d 用于INT64 或者 long long

%I64u 用于UINT64 或者 unsigned long long

%I64x 用于64位16进制数据

int main()
{
    int  iInt = 10;
    char ch = 'A';
    float f = 13.14f;
    double d = 12;
    printf("this is %d\n",iInt);
    printf("this is %c\n",ch);
    printf("this is %12f\n",f);
    printf("this is %6l\n",d);
    printf("this is %s","I love baby");
}

scanf 格式化输出符号详细说明

c

输出一个字符

d 或 i

输出带符号的十进制整数

o

以八进制无符号形式输出整形数(不带前导 0 )

x 或 X

以十六进制无符号形式输出整型数(不带前导), x 输出小写字母, X 输出大写字母

u

按无符号的十进制形式输出证型数

f

以带小数点的形式输出单精度和双精度数

E 或 e

以 [-]m..dde(E)+_xx 的指数形式输出浮点数。 d 的个数精度指定,精度为 0 时小数部分不输出

G 或 g

由系统决定采用 %f 格式还是采用 %e 格式,以使输出宽度最小

s

输出字符串的字符,直到

目录

PRINTF 格式化输出符号详细说明


遇到“ \0 ”,或者输出由精度指定的字符串数

p

输出变量的内存地址

%

打印一个“ % ”

 

 

m(m 为一正整数 )

规定输出数据的最小宽度为 m 位

.n(n 为一正整数 )

对实数,表示输出的实数保留 n 位小数,对字符串,表示截取字符串的前 n 个字符

使输出的数据在域内向左对齐,省略“一”时,向右对齐

#include

int main()
{
    long num1;
    short num2;
    int num3;
    int num4;
    char num5;

    printf("请输入num1: ");
    scanf("%ld",&num1);
    printf("请输入num2: ");
    scanf("%hd",&num2);
    printf("请输入num3*num4: ");
    scanf("%d*%d",&num3,&num4);
    printf("请输入num5: ");
    scanf(" %c",&num5); //如果不加空格的话,在输入num4时按下回车键会被当做num5进行输入,此时就得不到预期结果

    printf("请输出num1: %ld\n",num1);
    printf("请输出num2: %hd\n",num2);
    printf("请输出num3: %d\n",num3);
    printf("请输出num4: %d\n",num4);
    printf("请输出num5: %c\n",num5);

}

输入输出字符格式以结束标志“\0”作为最后一个字符

printf使用的是变量的标识符,而不是变量的地址。而scanf函数是用的是变量的地址,而不是变量的标识符。

输入输出double类型的数据使用%lf

//大小写转换
#include

int main()
{
    char ch1,ch2;
    puts("请输入需要转换的字符:");
    scanf("%c",&ch1);
    ch2=ch1-32;
    printf("转换后的字符为:%c,%d\n",ch2,ch2);
}

 

你可能感兴趣的:(C语言——基础部分)