C语言每日好题(3)

news/2024/9/24 23:23:36/

有任何不懂的问题可以评论区留言,能力范围内都会一一回答

#define _CRT_SECURE_NO_WARNING
#include <stdio.h>
#include <string.h>
int main(void)
{if ((strlen("abc") - strlen("abcdef")) > 0)printf(">\n");elseprintf("<=\n");return 0;
}

先不看答案思考一下这题答案应该是多少

并且思考一下为啥?

这个地方有坑,联想一下strlen使用需要注意的方面

我们直接上答案

这个地方我们错的原因可能觉得strlen("abc")的结果是3,strlen("abcdef")的结果是6,3-6当然小于0;

首先 strlen("abc")的结果是3,strlen("abcdef")的结果是6这一步是对的

但是别忘了strlen的返回值是size_t,3和6都是size_t类型的,因此相减也是size_t类型的,size_t是无符号类型。

当然如果大家想通过printf去打印strlen("abc")-strlen("abcdef")

就不能用%d,得用%zu或者%zd

%zd是有符号打印

%zu是无符号打印

以下面题目为例子

strlen("abc")-strlen("abcdef")

的结果是-3

但是因为size-t是无符号整数

(以x86及32位为例)

原码 1000 0000 0000 0000 0000 0000 0000 0011

反码 1111 1111 1111 1111 1111 1111 1111 1100

补码1111 1111 1111 1111 1111 1111 1111 1101

但是因为是%zd打印就是将补码按照有符号格式进行解决的,会根据上面的补码推导原码

原码,所以打印是-3

但是%zu打印就是将补码按照无符号格式进行解决的,会根据上面的补码推导原码

原码,所以打印是4294967293

如下图所示

上面代码中 (strlen("abc") - strlen("abcdef")) > 0就是按照%zu这种形式进行判断的。


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

相关文章

Mac系统安装Homebrew【已成功】

1、正常安装失败原因 1.1命令行安装失败 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 原因 没挂&#x1fa9c;&#xff0c;不过我挂了梯子安装很多次也还是失败&#xff0c;所以可能是网站原因 1.2、网…

电梯测试案例分析 —— 软件测试中的经典挑战

前言 在软件测试领域,有一个广为人知的经典案例——电梯问题。它不仅考验着测试人员的技术能力,还对他们的逻辑思维和问题解决技巧提出了挑战。本文将通过一个具体的电梯软件测试案例,来探讨测试中需要注意的关键点。 一、电梯问题背景介绍 电梯系统是一个典型的多用户交互…

Web大学生网页作业成品——明星EXO介绍网页设计与实现(HTML+CSS)(10个页面)(TABLE布局)

&#x1f389;&#x1f389;&#x1f389; 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…

Kafka主题(Topic/文件夹)的操作

Kafka主题&#xff08;Topic/文件夹&#xff09;的操作 1、Kafka主题&#xff08;Topic/文件夹&#xff09;2、Kafka主题&#xff08;Topic/文件夹&#xff09;的一些操作2.1、创建主题&#xff08;Topic/文件夹&#xff09;2.2、列出所有主题&#xff08;Topic/文件夹&#xf…

iOS 18 Beta 5:苹果的细腻之笔,绘制用户体验新画卷

在苹果的世界里&#xff0c;每一次系统更新都是对用户体验进行的一次精心雕琢。 随着iOS 18 Beta 5的上线&#xff0c;苹果带来了一系列令人耳目一新的功能&#xff0c;同时也在系统的每个细微之处展现了对完美的追求。 Safari浏览器的“干扰控制”功能 在今天信息充斥的数字…

数据结构-堆(二叉树的特殊)-第四天

数据结构的“堆”与内存管理的“堆”是同一个概念吗&#xff1f; 两者不是同一个概念&#xff0c;只是碰巧都叫“堆”。计算机系统内存中的堆是动态内存分配的一部分&#xff0c;程序在运行时可以使用它来存储数据。程序可以请求一定量的堆内存&#xff0c;用于存储如对象和数组…

观测云产品更新 | 异常追踪、数据保存策略、BPF 日志、管理优化等

观测云更新 Breaking Changes OpenAPI&#xff1a;【事件】未恢复事件数据源从 UE 变更为 E 。 新增功能 管理&#xff1a;新增 Client Token 统一管理入口&#xff0c;用户使用公网 DataWay 接入 RUM 应用时&#xff0c;可更换系统默认生成的 Token&#xff0c;使用自定义…

【oracle】工具访问oracle提示-IO 错误: Got minus one from a read call

问题描述&#xff1a; 使用工具访问数据库时&#xff0c;提示IO 错误: Got minus one from a read call&#xff0c;在服务器上检查数据库正常&#xff0c;监听正常&#xff0c;连接数合理&#xff0c;防火墙没限制。最后定位sqlnet.ora配置限制了客户端访问。 解决&#xf…