在学习strcmp()函数时记录一个有趣的逻辑
#include <iostream>
#include <cstring>
int main(void)
{
using namespace std;
char word[5] = "?ate";
for (char ch = 'a'; strcmp(word, "mate"); ch++)
{
cout << word <<endl;
word[0] = ch;
}
cout << "After loop ends,word is " << word << endl;
return 0;
}
strcmp(word, “mate”) 用来比较两个字符串是否相同 其底层逻辑是逐个比较两个字符串中对应位置的两个字符的ascall码的大小
当前项字符大于后项字符 返回1
当前项字符小于后项字符 返回-1
当前项字符等于后项字符 返回0
结合非0 即为真的逻辑关系
可以巧妙的使用这个特性 来作为for的判断依据
首先需要明确一个概念 字符串常量 字符数组名 在信息流中的传输的本质是指针
因此
strcmp(word, “mate”)所进行的比较 可拆解为
*word中的内容 也就是字符数组中的第一个元素 和 字符串常量 “mate” 中的第一个元素相比较
比较是否相同 相同即为猜对