首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当&&运算符位于两个字符串之间时,它会做什么?

当&&运算符位于两个字符串之间时,它会做什么?
EN

Stack Overflow用户
提问于 2013-01-01 16:56:55
回答 4查看 1.4K关注 0票数 1

在下面的代码中,语句str1[i] && str2[i];count1[str1[i]]++;到底是做什么的?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char str1[4]="rate";
char str2[4]="tear";

int count1[256] ;
int count2[256] ;

int i=0;

for (i = 0; str1[i] && str2[i];  i++)
{
   count1[str1[i]]++;//count1['g']++what does that mean ?
   count2[str2[i]]++;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-01 16:59:19

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (i = 0; str1[i] && str2[i];  i++)

等同于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (i = 0; (str1[i] != 0) && (str2[i] != 0);  i++)

,它与

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (i = 0; (str1[i] != '\0') && (str2[i] != '\0';  i++)

基本上,如果在条件语句中使用了任何表达式,则会检查该值是否为boolean - true或false。如果它不是布尔值--比方说它是一个整型,那么0就是false,其他的就是true

这里的str[i]是一个char --它是一个整型。所以如果stri是0,那么它的计算结果为false,否则它的计算结果为true。

例如。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char c = 'A';

if(c)

等同于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (c != 0)

,它与

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (c != '\0')

C是'A‘(在ascii中是65)。65 != 0,因此它的计算结果为true &将输入if

如果相反,您拥有

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char c = 0;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char c = '\0';

则c的计算结果为0。因此,if(c)的计算结果为false &没有输入if。

您可以将相同的逻辑扩展到stri,它是一个char

如果你有str1[]="rate",它和str1[0] = 'r', str1[1] = 'a', str1[2] = 't', str1[3] = 'e', str1[4] = 0是一样的。

关于count1[str1[i]]++;

它是每个字符出现的次数的计数-例如。如果字符集是ascii,那么在字符串遍历结束时,count'A'将包含字符串中出现'A‘的次数。

只有当计数数组的每个成员在某个地方被初始化为0 (或者它们是全局的)时,它才会起作用。

考虑一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
str1[] = "ABAB";

count[str1[0]]count['A']相同,后者与count[65]相同(如果字符集为ascii)。

++将使计数“a”变为1

i变为1时,count[str1[1]]++导致count['B']变为1。i = 2,然后count['A']变为2。i = 3,然后count['B']变为2。

票数 10
EN

Stack Overflow用户

发布于 2013-01-01 17:02:32

该算法同时计算每个ascii字符在两个字符串中的出现次数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
str1[i] && str2[i]

检查是否到达这两个字符串的末尾。count1[str1[i]]++增加了字符str1i的出现次数。

票数 3
EN

Stack Overflow用户

发布于 2013-01-01 16:59:10

&&适用于2个字符,而不是字符串。在这种情况下,它会检查这两个字符是否都不是空字符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14112308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文