十万个C语言冷知识

news2024/12/24 20:26:42

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.coloradmin.cn/o/581931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

效率神器AutoHotKey的初步使用

文章目录 下载安装与体验快捷键在程序中的热键热字串和重映射实战 Python命令行 下载安装与体验 下载AHK&#xff0c;安装后&#xff0c;右键->新建->AutoHotkey脚本&#xff0c;内容为 #space::Run tinycool.blog.csdn.net其中&#xff0c;#表示Win键&#xff1b;#spa…

Rust每日一练(Leetday0014) 组合总和II、缺失正数、接雨水

目录 40. 组合总和 II Combination Sum II &#x1f31f;&#x1f31f; 41. 缺失的第一个正数 First Missing Positive &#x1f31f;&#x1f31f;&#x1f31f; 42. 接雨水 Trapping Rain Water &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题…

Web 自动化测试案例(入门级)——关闭某视频网站弹出广告以及打开登录框输入内容

文章目录 &#x1f4cb;前言&#x1f3af;自动化测试&#x1f9e9;环境的搭建 &#x1f3af;案例介绍&#x1f4dd;最后 &#x1f4cb;前言 人生苦短&#xff0c;我用Python。许久没写博客了&#xff0c;今天又是久违的参与话题的讨论&#xff0c;话题的内容是&#xff1a;如何…

基于springboot注解的shiro 授权及角色认证

目录 授权 后端接口服务注解 授权验证-没有角色无法访问 授权验证-获取角色进行验证 授权验证-获取权限进行验证 授权验证-异常处理 授权 用户登录后&#xff0c;需要验证是否具有指定角色指定权限。Shiro也提供了方便的工具进行判 断。 这个工具就是Realm的doGetAuthor…

华为OD机试真题B卷 Java 实现【狼羊过河】,附详细解题思路

一、题目描述 一农夫带着m只羊&#xff0c;n只狼过河&#xff0c;农夫有一条可载x只狼/羊的船&#xff1b;农夫在时或者羊的数量大于狼时&#xff0c;狼不会攻击羊&#xff1b; 农夫在不损失羊的情况下&#xff0c;运输几次可以完成运输&#xff1f; 返程不计入次数。 二、…

K8s容器运行环境安全加固

K8s容器运行环境安全加固 目录 文章目录 K8s容器运行环境安全加固目录1、最小特权原则&#xff08;POLP&#xff09;2、AppArmor限制容器对资源访问3、Seccomp 限制容器进程系统调用关于我最后 1、最小特权原则&#xff08;POLP&#xff09; **最小特权原则 (Principle of lea…

graalvm把java编译为c/c++能够使用的动态库(dll/so)

graalvm把java编译为c/c能够使用的动态库(dll/so) 1.安装graalvm oracle官方企业版 github的openjdk版本 1.1 下载对应系统版本&#xff0c;配置环境变量 本人环境 1. win10 openjdk 17.0.5 2022-10-18 OpenJDK Runtime Environment GraalVM CE 22.3.0 (build 17.0.58-jv…

chatgpt赋能python:Python中的None值如何去掉?

Python中的None值如何去掉&#xff1f; Python是一种具有高度灵活性和可读性的编程语言&#xff0c;它有许多强大的功能&#xff0c;令许多开发人员喜欢使用它。然而&#xff0c;可能会遇到延迟或者None值的情况&#xff0c;这时需要我们找到正确的方法去除它们。 None值是什…

C#,码海拾贝(27)——求解“对称方程组”的“分解法”之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

happens-before规则

happens-before背景由来 happens-before的概念最初由Leslie Lamport在其一篇影响深远的论文&#xff08;《Time&#xff0c;Clocks and the Ordering of Events in a Distributed System》&#xff09;中提出。Leslie Lamport使用 happens-before 来定义分布式系统中事件之间…

【利用AI让知识体系化】7种结构型模式

文章目录 结构型模式简介适配器模式装饰器模式代理模式外观模式桥接模式组合模式享元模式 结构型模式 简介 在设计模式中&#xff0c;结构型模式用于描述如何将对象和类组装成较大的结构&#xff0c;并灵活地处理对象之间的关系。 结构型模式包括以下几种&#xff1a; 适配器…

驱动开发——嵌入式(驱动)软开基础(十)

1. 64位的计算机有哪些优点&#xff1f; &#xff08;1&#xff09;可以进行更大范围的整数计算。 &#xff08;2&#xff09;可以支持更大的内存&#xff0c;虚拟内存空间大小一般为2^48&#xff08;256TB&#xff09;。64位的Linux一般使用48位表示虚拟内存空间地址&#x…

esp8266 OTA远程无线升级

第一步、编译生成.bin升级固件 本教程需要用到 arduino IDE的esp8266开发环境,关于arduino IDE 的ESP8266环境配置可参考:环境配置: 点击跳转 如果已安装好esp8266 开发环境,继续: 使用arduino IDE软件,打开随便一个需要升级的程序,点击「项目」-「导出已编译的二进制…

【Bug 全解决】 Java、Spring boot 后端项目 Bug 总结

Bug 收集与总结 本文记录的是 SpringBoot 后端项目使用和运行代码时所遇到的各种问题&#xff0c;全部都已解决&#xff0c;欢迎在评论区补充你遇到的 Bug 哦&#xff01;仅以本文记录学习社区项目时&#xff0c;所遇到的奇奇怪怪的 bug&#xff0c;以及一些很愚蠢的错误&…

Golang每日一练(leetDay0080) 矩形面积、翻转二叉树

目录 223. 矩形面积 Rectangle Area &#x1f31f;&#x1f31f; 226. 翻转二叉树 Invert Binary Tree &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏…

RPC原理与实现

rpc叫做远程过程调用&#xff0c;是指一台机器上的服务通过通信协议调用网络中另一台机器上的程序&#xff0c;并拿到结果。 1、基本流程 基本流程为&#xff1a; 客户端程序通过Client Stub调度rpc函数Client Stub将调用方法、参数按照通信协议序列化成网络二进制数据&#…

koa2中HTTP错误处理

HTTP错误 访问 Web 服务器或应用程序时&#xff0c;服务器收到的每个 HTTP 请求都会以 HTTP 状态代码进行响应。 HTTP 状态代码是三位数代码&#xff0c;分为五个不同的类别。 状态代码的类别可以通过它的第一个数字快速识别&#xff1a; 1xx&#xff1a;信息2xx&#xff1a…

“大娘,你听说过ChatGPT吗?”,“你说的那个什么鸡皮蹄,我这饼里加不了!”

最近看到一个有意思的段子&#xff0c;大概意思是&#xff1a; 年轻人去买煎饼&#xff0c;问摊煎饼的大娘知不知道什么是ChatGPT。 大娘摇了摇头&#xff1a;“你说的那个什么鸡皮蹄&#xff0c;我这饼里加不了”。 年轻人尝试跟大娘解释ChatGPT是什么东西&#xff0c;大娘…

快速上手kettle(二)小试牛刀

快速上手kettle二 小试牛刀 一 、前言二 、两个小目标三、 kettle核心概念介绍3.1 转换3.1.1 步骤(Step)3.1.2 跳&#xff08;Hop&#xff09;3.1.3 元素据3.1.4 数据类型3.1.5 并发执行 3.2 作业 四、实践操作4.1 案例1 将csv文件转换成excel文件4.1.1 在kettle中新建一个转换…

在Node.js中接受来自命令行的输入

目录 1、简介 2、readlineSync 3、列表选择一个项目&#xff1a; 4、类似滑块范围的UI: 1、简介 如何制作一个Node.js CLI程序使用内置的readline Node.js模块进行交互 如何制作一个节点js CLI程序交互&#xff1f; Node.js 从版本7起开始提供了readline模块来执行以下操…