![](https://img-blog.csdnimg.cn/20191205173718935.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言
文章平均质量分 93
C语言
@HDS
NULL
展开
-
两次调用scanf函数的问题
文章目录两次调用scanf函数可能存在的问题1.问题描述2.程序演示3.原理分析4.解决方式两次调用scanf函数可能存在的问题1.问题描述scanf()函数可以从stdin中读取数据并写入指定的内存地址处。它的工作原理大致如下:程序运行至scanf()处时,scanf()检查stdin是否有数据。如果stdin中有数据则按照格式串的格式读取数据并写入给定的内存地址处。如果stdin中没有数据,则阻塞等待用户输入。将用户的第一个非空白符输入(即不算空格和回车)与格式串中的第一个格式做匹配,只要原创 2021-04-04 22:27:03 · 2912 阅读 · 4 评论 -
字符串和字符数组
字符串和字符数组C的字符串是通过字符数组来实现的。通过打印字符数组的每个元素来观察字符数组的元素组成和布局:#include <stdio.h>#include <string.h>int main(void){ char string[] = "hello";/* 字符串(字符数组)的长度是5,字符数组的大小是6。虽然空字符不计入字符串长度,但是空字符占一个字节 */ char message[] = {'h', 'e', 'l', 'l', 'o', '\0'};原创 2020-10-30 23:56:39 · 330 阅读 · 0 评论 -
理解指针运算符&和取值运算符*的原理
通过数组理解取地址运算符&的原理首先,我们看一段简单的代码:#include <stdio.h>int main(void){ /* * 当我们定义一个数组a时,编译器根据指定的元素个数和元素类型分配确定大小(元素类型大小x元素个数)的一块内存 * 并把这块内存命名为a。 */ int a[5];/* a作为右值时,代表数组首元素的地址,而非数组的首地址 */ //int *p; //p = &a; //printf("address of a[0原创 2020-10-15 15:31:51 · 1289 阅读 · 2 评论 -
errno,perror(),strerror()
errno,perror(),strerror()C语言编程中错误打印需要知道的知识:errno:表示错误代号perror():显示传给它的字符串 ,头文件<stdio.h>strerror():返回一个指针,指向错误码代表的以文本显示的string。头文件<string.h>errno.herrno.h是标准C库的头文件,定义了通过错误码来回报错误信息的宏。errnoerrno本身是一个int型的全局变量,库函数在发生错误时,可以直接返回一个错误的标识,比如-1转载 2020-07-08 15:19:17 · 303 阅读 · 0 评论 -
单精度浮点类型float不能精确表示实数的原因
float在内存中的存储方式符号位 指数(8位) 尾数(23位)S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF31 30 23 22 0float总共4个字节–32位:符号位最左边的是符号位,0表示正数,1表示负数指数E是指数部分,同样用二进制类表示指数尾数尾数就是由23位小数+1位组成(稍后解...原创 2019-08-05 18:17:36 · 3008 阅读 · 0 评论 -
无符号数
无符号数无符号数在计算机内部以原码存放无符号数没有符号位无符号数只用于表示正数unsigned只能用来修饰整数类型的变量,不能修饰浮点类型的变量unsigned int i = -10;无符号数只能用来表示正数,但是在上面这个C语句中,将-10赋值给了一个无符号类型的变量i,那变量i的值是多少呢?unsigned的范围是0~65535,就是说unsigned所能表示的值只会限定...原创 2019-08-04 23:50:03 · 1388 阅读 · 0 评论 -
数据类型和变量的本质
什么是数据类型和它的本质举一个形象的例子,蛋糕店做蛋糕。蛋糕店有很多不同模样的蛋糕,按体积有小的,中的,大的。三种体积的蛋糕分别对应有三个模子,我们给这三个模子分别取个名字,小的就叫char,中的叫short,大的叫int。现在,我们说这三个模子都有了名字,但这三个模子有什么作用呢?那就来回顾下蛋糕是怎么做出来的,做蛋糕首先要有一团和好的面,把这团面拉长,给它起个名字,就叫内存条。现在要用这一...原创 2019-08-03 23:21:09 · 338 阅读 · 0 评论 -
size_t类型
size_t类型#ifndef __SIZE_TYPE__#ifdef _WIN64#define __SIZE_TYPE__ long long unsigned int#else#define __SIZE_TYPE__ long unsigned int#endif#endif总结:64位架构中被定义为:long long unsigned int32位架构中被定义为:long unsigned int参考资料C语言学习:size_tsize_t 这个类型的意义是什么?转载 2020-07-07 16:49:42 · 304 阅读 · 0 评论 -
C语言中常量后缀,u或U,l或L,f或F问题
原文地址:C语言中常量后缀,u或U,l或L,f或F问题小白在学习过程中有时会在程序中看到0u或是0ul等常量有后缀的情况,如果没接触到C语言常量后缀的话可能就有点疑惑~其中的u为unsigned,l为long,f为floatC语言中常量的默情况:整型默认为有符号int;浮点型默认为double;如果整形常量大小超出int,默认自然就为long int;如果需要无符号整型常量的话就可以在常量后面加u或是U,如0u或是0U,同理可以在常量后面加ul或UL表示无符号长整型常量;而浮点型常量后缀只有f或F转载 2020-05-13 15:49:27 · 5074 阅读 · 0 评论 -
C的return和空指针
C的return和空指针写的很好的文章参考C 语言中 void* 详解及应用空字符 空格字符(字符) 空字符串 NULL的区别C语言return的用法详解,C语言函数返回值详解void 和 void*void 也是一种数据类型,可以称为空类型。void* 是一种指针类型,可以称之为空指针。对于定义一个函数来说,一定要定义好参数类型和返回值类型,所以对于void和void*,会有这几...原创 2020-03-25 23:20:02 · 3825 阅读 · 1 评论 -
理解C中的类型和变量
理解C中的类型和变量C语言用的很多了,想要真正理解其精髓,还需要懂它们设计背后的意义类型是大小,变量是内存空间的别名。int i;char c;int是一个整型,占4个字节;char是字符型,占1个字节。不论是什么类型,它们的实际作用就是约定一个固定大小的内存。叫什么名字其实无所谓,你愿意也可以用typedef将int改成ant,bnt,cnt…,怎么开心怎么来,但是不论你给它起什...原创 2020-03-18 12:02:36 · 166 阅读 · 0 评论 -
打印格式总结
int %d long %ld long long %lld unsigned int %uunsigned long %luunsigned long long %llu原创 2020-03-17 10:34:50 · 331 阅读 · 0 评论 -
类型与变量编程练习-浮点数四舍五入
浮点数四舍五入通过强制类型转换实现满五进一,未满舍弃 /****************************************************************************** * Author : hds * Email...原创 2019-12-17 00:07:05 · 122 阅读 · 0 评论 -
深入数据类型与变量
float && doublefloat和double标准格式打印出的数字默认都会保留小数点的后6位。通过格式化打印可以控制具体要保留小数点后几位数字,如下:printf("%.f", value);但是float只会保留6~7位有效数字,double会保留15-16位有效数字。具体能保留几位因编译器而异。对于GCC,float类型保留7位有效数字,double类型保留15...原创 2019-12-10 16:43:30 · 115 阅读 · 0 评论 -
for(;;),while(1),while(true)的区别
Linux内核中的无限循环内核中无限循环的写法有for( ; ; ),while(1),while(true)内核代码中的for( ; ; )内核代码中的while(1)内核代码中的fwhile(true)这三种写法有什么区别?这和编译器有关在VS2010中进行测试在循环处设置断点,并开启调试,然后反汇编,可以看到for( ; ; ),while(1)的汇编语句。可以...原创 2019-12-05 23:21:35 · 4771 阅读 · 0 评论