![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
学完C++再回过头来看C,发现C才是最高效率、最接近硬件的语言
戎码关山
你在炫耀诗和远方,父母却尚在苟且
展开
-
千万不要解引用未初始化的指针
一定牢记一点,不要解引用未初始化的指针int *p;*p = 5;这是严重的错误,因为p还没有被初始化,p指向一个随机地址,不知道5将存储在哪里。原创 2020-01-23 23:26:38 · 719 阅读 · 0 评论 -
指定初始化器(C99)C++不支持
C99增加了一个新特性,可以使用方括号指明需要特别初始化的元素,在初始化一个元素之后,未初始化的元素一般都为零。#include<stdio.h>int main(){ int arr[6] = {[5] = 12};//特别指定a[5] = 12; for(int i = 0;i <6; i++) printf("%d ",arr[i]...原创 2020-01-23 23:05:33 · 759 阅读 · 0 评论 -
函数参数初始化,使用列表,C语言可以,C++不允许
同样的列表初始化,C语言不会报错#include<stdio.h>int sum(a,b,c)int a;int b;int c;{ return a+b+c;}int main(){ printf("%d", sum(5,9,59));}但是C++会报错:#include<iostream>using namespace std...原创 2020-01-23 15:14:10 · 1051 阅读 · 0 评论 -
【C Primer Plus查缺补漏】2020年1月19日
d小数取模运算小数我们都知道,在int类型进行除法时,会发生“截断”。比如说:#include<stdio.h>int main(){ printf("%d",5/2);}我们会得到2,而不是2.5.这里有一个很简单的方法,就是在整型后面 加上一个小数点.#include<stdio.h>int main(){ printf("%f"...原创 2020-01-19 13:22:45 · 95 阅读 · 0 评论 -
printf()函数和scanf()函数的*修饰符
1、printf函数中的*修饰符便于随时定义并更改浮点数的输出位宽和精度。#include<stdio.h>int main(){ int width = 2; int precision = 5; width = 9; double pi = 3.1415926525; printf("%*.*f",width,precision,pi...原创 2020-01-16 08:27:46 · 495 阅读 · 0 评论 -
printf()函数的返回值
大部分C函数都有一个返回值,这是函数计算并返回主调函数的值。printf()函数也不例外,它返回打印字符的个数。#include<stdio.h>int main(){ int r = printf("dghtql\n"); printf("%d",r);}输出:dghtql7加上换行符刚好7个...原创 2020-01-16 07:49:25 · 262 阅读 · 0 评论 -
printf()函数中的width.precision
对于width来说,文档原文是:Minimum number of characters to be printed. If the value to be printed is shorter than this number, the result is padded with blank spaces. The value is not truncated even if the resu...原创 2020-01-16 07:03:25 · 571 阅读 · 0 评论 -
使用%zd打印数据类型的大小
C99和C11提供%zd转换说明匹配sizeof的返回类型:printf("%zd",sizeof(long long));如果使用%d会得到以下报错warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]printf("%d",sizeof(long long))...原创 2020-01-15 23:16:28 · 4685 阅读 · 0 评论 -
用十六进制表示浮点型常量
C99标准增加了一种新的浮点型常量格式----用十六进制表示浮点型常量,即在十六进制数前加上0x或者0X前缀,用p和P分别代替e和E,用2的幂代替10的幂。例如:0xa.1fp10(10∗161+1∗16−1+15∗16−2)∗210(10*16^1+1*16^-1+15*16^-2)*2^10(10∗161+1∗16−1+15∗16−2)∗210=10364.0转换说明含义...原创 2020-01-14 08:58:58 · 2372 阅读 · 3 评论 -
在C程序中显示八进制数前缀0和十六进制前缀0x
我们已经知道在打印变量的时候,要分别使用%d,%o,%x显示十进制、八进制、和十六进制的变量。如:#include<stdio.h>int main(){ int x = 100; printf("%d,%o,%x\n",x,x,x);}输出:100,144,64分别是100 的十进制、八进制和十六进制表示,但是没有前缀很难知道到底是几进制的表示...原创 2020-01-13 16:02:54 · 2695 阅读 · 0 评论