一种巧妙的反转字符串的方法及思考过程

简介:

如题,需求是反转字符串,当然啦方法是有很多的,这种我觉得蛮有意思的^_^

#include <string>
#include <iostream>

using namespace std;

int main() {
    string s;
    cin>>s;
    for(int i = s.size(); i--; ) {
        cout<<s[i];
    }
    cout<<endl;
    return 0;
}
Input: abc
Output: cba

这段代码的特点是i是放在了判断语句中,起初我不是很能理解,不过根据输出断定了是i等于0的时候就退出了循环。经过打断点来测试,证实了这个猜测。

为了证实这个猜想,我继续写了两段简短的代码。

#include <string>
#include <iostream>
using namespace std;
int main() {
    string s;
    cin >> s;
    for (int i = s.size(), j = s.size() - 1; i--, j--;) {
        cout << s[i] << " " << s[j];
    }
    cout << endl;
    return 0;
}
Input: abc
Output: c bb a

最终的状态是:

i=1, j=0

另一段代码是:

#include <string>
#include <iostream>
using namespace std;
int main() {
    string s;
    cin >> s;
    for (int i = s.size(), j = s.size() - 1; j--, i--;) {
        cout << s[i] << " " << s[j];
    }
    cout << endl;
    return 0;
}
Input: abc
Output: c bb a (输出这部分后程序崩溃)

最终的状态是:

j=-1, i=0

第一段代码表明自减操作有返回值,且就是这个变量的值;那么为什么第二段代码中j减到0之后还会继续减少呢,之所以继续减少是因为循环还在走,之所以循环没有退出是因为这里的逗号运算符的结果取最后一个。

还有一个小细节,我不是很清楚,因为很少在实际码字中用过,那就是判断中是因为0才停止的,那么负数呢?也就是说负数直接类型转换是true还是false呢。

#include <iostream>
using namespace std;
int main() {
    if(-1) cout<<"t";
    else cout<<"f";
    return 0;
}
Output: t

紧接着我又尝试了在C#中的情况,这里无法自动将int转换成bool,只得写了一个方法。

class Program
{
    static void Main(string[] args)
    {
        string s;
        s = Console.ReadLine();
        for (int i = s.Length; isBool(i--);)
        {
            Console.Write(s[i]);
        }
        Console.WriteLine();
    }

    static bool isBool(int n)
    {
        if (n > 0) return true;
        else return false;
    }
}
Input: abc
Output: cba

总而言之,好吧我承认很Easy,不过其过程却是充满了乐趣,就喜欢这种假装探索的感觉。Bye……

目录
相关文章
|
24天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
34008 135
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
6天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
3002 14
|
19天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
7369 21
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
18天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
5173 12
|
20天前
|
人工智能 机器人 Linux
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI智能体,支持飞书等多平台对接。本教程手把手教你Linux下部署,实现数据私有、系统控制、网页浏览与代码编写,全程保姆级操作,240字内搞定专属AI助手搭建!
5928 23
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手