前面两篇说到了C语言的数据类型:整型,实型,字符型。其中有数据的存储和字节之类的基础。
今天说结构化程序还有一些关于输入输出的语言。也是仅仅局限在整型,实型,字符型。后面的将会说数组,指帧,结构体和文件的知识。
结构化程序
C实际上有三种结构:顺序结构,选择结构和循环结构。程序都可以用这三种基本结构完成。用着三种基本结构构成的程序称为“结构化程序”。能提供这三种基本结构的语句的语言称为结构化语言。C语言就是结构化语言。
赋值和赋值过程中类型转换
简单地说。“=”就是赋值运算符。
- “a=3”就是将3赋值给a。
- a+=3,a*=3之类的复合赋值表达式
下面说赋值过程中的类型转换 - float/double 给int。只取正数部分赋值给int。
#include<stdio.h>
main()
{
float put_value=3.7;
int get_value;
get_value=put_value;
printf("get_value=%d\n",get_value);
}
运行结果:get_value=3
- int赋值给float/double。将会一实数的形式存储。
#include<stdio.h>
main ()
{
int put_value=5;
float get_value;
get_value=put_value;
printf("get_value=%f\n",get_value);
}
运行结果:get_value=5.000000
-double赋值给float。截取前面6位有效数字存在flaot类型。因为double在这里占用8个字节。float占用4个。因此,他只取有效字节里的数据存储。
#include <stdio.h>
int main ()
{
double put_value=1.2345678912334;
float get_value;
get_value=put_value;
printf("get_value=%f\n",get_value);
}
运行结果:get_value=1.234568
- 字符型赋值给整型。将字符的ASCII码赋给整型变量
#include<stdio.h>
int main()
{
char put_value='a';
int get_value;
get_value=put_value;
printf("get_value=%d\n",get_value);
}
运行结果:get_value=97
- 字节较多的整型变量给字节少的整型变量或者字符型。通过下面代码可以知道。如果输出形式以%c形式,会根据ASCII码进行转换。如果输出形式%d会将低字节的部分送过去。但是超出的部分就舍掉。如果long int送到int里。数据将会失真。
#include <stdio.h>
int main()
{
int put_value=289;
char get_value;
get_value=put_value;
printf("get_value=%c\n,get_value=%d\n",get_value,get_value);
}
运行结果:get_value=!, get_value=33
#include <stdio.h>
int main()
{
long int put_value=1234567891234;
int get_value;
get_value=put_value;
printf("get_value=%d\n",get_value);
}
运行结果:get_value=1912277282。
- 有符号的整型赋值给无符号。结果将会失真,因为这里的数字第一位代表符号并且以补码的形式存储。如果转成无符号的将会用二进制进行换算。导致数值变化。
#include<stdio.h>
int main()
{
int put_value=-5;
unsigned int get_value;
get_value=put_value;
printf("get_value=%u\n",get_value);
}
运行结果:get_value=4294967291
- 无符号的整型赋值给有符号。这里就看到又转换回去了。
#include <stdio.h>
int main()
{
unsigned int put_value=4294967291;
int get_value;
get_value=put_value;
printf("get_value=%d\n",get_value);
}
运行结果:get_value=-5
数据的输入输出。
- 字符的输出putchar()和输入getchar()。
- 整型和浮点型的输入scanf()和输出printf()。
这些都是很基础很简单的。下面说点输出数据的时候格式控制。 - %md:指定输出数据的宽度。m是指定的宽度。如果数据实际的位数小于m(在本例中1234是4位,m=6,所以空出两个位置)。如果大于m按照实际位数输出。
#include<stdio.h>
int main()
{
int num=1234;
printf("%6d\n%d\n",num,num);
}
运行结果: 1234
1234。
- %ld: 是按照长整型的数据输出。
#include <stdio.h>
int main()
{
long int num=12343232323232;
printf("%ld\n%d\n",num,num);
}
运行结果是12343232323232,-503685472
- %o和%x分别是以8进制和16进制输出
- %u是以无符号的形式输出
- %m.ns: 意思是输出占m列但是只取左端的n个字符。这n个字符输出在m列的右侧,左面补上空格。其余的形式也是相同意思。
#include <stdio.h>
int main()
{
char value[15]="hello everyone";
printf("result=%9.7s\n",value);
}
运行结果:result= hello e
好了 今天就到这。 欢迎留言讨论。