十万个C语言冷知识

news/2025/2/22 17:27:14/

1.printf返回值:

成功:返回打印字符的个数

失败:返回EOF,EOF是文件结束的标志,宏定义为-1

#include <stdio.h>
int main() {char str[] = "123456789";printf("%d\n", printf("%d\n", printf("%s\n", str)));return 0;
}

 最内部printf打印“123456789\n”,共10个字符,返回值为10,通过第二个printf打印出来,以此类推。

2.scanf

成功:返回成功输入的个数,可能为0

失败:返回EOF,EOF是文件结束的标志,宏定义为-1

#include <stdio.h>
int main() {int a = 0, b = 0;printf("scanf返回值=%d\n", scanf("%d %d", &a, &b));printf("a=%d\nb=%d", a, b);return 0;
}

 

 因此可以书写以下类型的代码:

#include <stdio.h>
int main() {int a;char arr[10] = { 0 };while (scanf("%d %s", &a, arr)==2){printf("%d %s\n", a, arr);}return 0;
}

3.sizeof返回值

sizeof的返回值是size_t类型,是无符号整形,代表占内存的大小,单位是字节。

 size_t 是一些C/C++标准在stddef.h中定义的,size_t 类型表示C中任何对象所能达到的最大长度,它是无符号整数。它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t 可能不一样。size_t在32位系统上定义为 unsigned int,也就是32位无符号整型。在64位系统上定义为 unsigned long ,也就是64位无符号整形。size_t 的目的是提供一种可移植的方法来声明与系统中可寻址的内存区域一致的长度。
推荐用%zu打印,%u和%lu有时候也是可以的。

#include <stdio.h>
int main() {char a[] = "123456789";char* p = a;printf("%zu", sizeof(p));return 0;
}

 

 4.[ ]下标引用操作符

#include <stdio.h>
int main() {char a[] = "123456789";printf("%c\n", a[5]);printf("%c\n", 5[a]);printf("%c\n", *(&a[0] + 5));printf("%c\n", "123456789"[5]);printf("%c\n", 5["123456789"]);printf("%c\n", *("123456789"+5));return 0;
}

乍一看,这玩意是什么,好诡异的代码。首先你要搞明白[ ]的意思。

定义字符串两种方式:

char* p="123456789"

char a[]="123456789"

两种都可以定义字符串,当输出字符串中的某一个字符时:

*(p+i);

a[i]

两者是等价的,所以*(a+i)=a[i]

下面给出 [ ] 操作符的定义:

1.定义数组时,向编译器申请一段连续的空间。

2.指针[ i ] 表示以指针当前位置为起点,向后跳过i个该指针所指类型的大小的空间。

3.p[q] 等价于 *(p+q),若pq都不是指针则会报错!\n根据第三条,我们可以写出这样的代
 

 

 5.{ }和[ ]的替代

在某些编译器下,比如是dev 5.11下我们可以使用<:和:>代替 [ 和 ] ,用<%和%>代替 { 和 }。

#include <stdio.h>
int main() 
<%char a<::>="abcdefghigk";printf("%s",a);return 0;
%>

 6.字符串拼接

“” 包围的字符串放在一起,会自动拼接一个字符串;

#include <stdio.h>
int main() {char* str = "aaaa""bbbb"\"cccc";printf("%s", str);return 0;
}

 今日太晚,明日继续更新,请大家持续关注!!!!!


http://www.ppmy.cn/news/100318.html

相关文章

vue常见面试总结

1.vue生命周期 2.组件传值 3.插槽&#xff1a;具名插槽&#xff1a;<slot name"header">slot> 作用域插槽 4.对 MVVM 的理解:MVVM 是 Model-View-ViewModel 的缩写,核心是提供对View 和 ViewModel 的双向数据绑定&#xff0c;这使得ViewModel 的状态改…

数据类型变量的命名规则转义字符(概念及详解)

数据类型&#xff1a; 序号符号类型占空间大小&#xff08;字节&#xff09;初始化1char字符数据类型1char ‘a’ ; 或 char “abc”;2short短整型2short a 0;3int整形4int a 0;4long长整型4long a 0;5long long更长的整形8long long a 0;6float单精度浮点型4float a …

IT知识百科:什么是分布式云?

在当今信息技术高速发展的时代&#xff0c;云计算已经成为了企业和个人的重要组成部分。而在云计算领域中&#xff0c;分布式云是一种重要的架构模式&#xff0c;它允许资源的分散部署和管理&#xff0c;以实现高可用性、可伸缩性和弹性的服务提供。 本文将详细介绍什么是分布…

史上最全Android性能优化方案解析

Android中的性能优分为以下几个方面&#xff1a; 布局优化 网络优化 安装包优化 内存优化 卡顿优化 启动优化 …… 一.布局优化 布局优化的本质就是减少View的层级。常见的布局优化方案如下&#xff1a; 在LinearLayout和RelativeLayout都可以完成布局的情况下优先选择LinearL…

MQTT(3):MQTT协议原理

官方文档中对于MQTT协议包的结构有着具体的说明&#xff1a;http://mqtt.org/documentation 在MQTT协议中&#xff0c;一个MQTT数据包由&#xff1a;固定头&#xff08;Fixed header&#xff09;、可变头&#xff08;Variable header&#xff09;、消息体&#xff08;payload&…

【笔记整理】图神经网络学习

【笔记整理】图神经网络学习 文章目录 【笔记整理】图神经网络学习一、GNN简介1、图结构 & 图基础算法1&#xff09;引言&#xff08;"非欧几何, 处理图数据的NN"&#xff09;2&#xff09;图基本概念 & 分类&#xff08;"邻接矩阵, 图结构分类"&a…

【LAMP平台建构】

一.LAMP介绍 LAMP架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词&#xff0c;具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP&#xff08;…

第3章“程序的机器级表示”:访问信息

文章目录 3.4 访问信息3.4.1 操作数指示符3.4.2 数据传送指令3.4.3 数据传送示例 3.4 访问信息 一个 IA32 中央处理单元&#xff08;CPU&#xff09;包含一组八个存储 32 位值的寄存器&#xff0c;这些寄存器用来存储整数数据和指针。 下图显示了这八个寄存器。它们的名字都是…