一点点积累的C语言知识(三)

前面两篇说到了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

好了 今天就到这。 欢迎留言讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值