gpt4 book ai didi

c - 下面这个C语言代码片段是做什么的?

转载 作者:行者123 更新时间:2023-11-30 18:26:05 27 4
gpt4 key购买 nike

以下代码片段是计算后缀表达式的程序的一部分。我对 C 编程没有太多经验,所以请原谅我的知识较少。我不明白代码中突出显示的部分在做什么。

char str[100];

int i, data = -1, operand1, operand2, result;

/* Get the postfix expression from the user */

printf("Enter ur postfix expression:");

fgets(str, 100, stdin);

for (i = 0; i < strlen(str); i++)
{

if (isdigit(str[i]))
{
/*
* if the i/p char is digit, parse
* character by character to get
* complete operand
*/
data = (data == -1) ? 0 : data;

data = (data * 10) + (str[i] - 48); //What is happening here

continue;
}

最佳答案

它将字符串 str 中的数字转换为实际数字,逐个数字(或者每个字符,如果您愿意的话)。

线路

data = (data * 10) + (str[i] - 48);

获取“到目前为止”的数字并添加新的数字,方法是将该数字乘以 10,然后添加 str[i] 的值。字符 str[i] 的范围为 '0' .. '9',减去其中的 48(即 '0' 的 ASCII 值)即可得到该数字的值。

如果data是95;例如,str[i] 为“3”,则 data 变为 950 + ASCII 码“3”- ASCII 码“0”,因此 数据 变为 950 + 3 = 953。

关于c - 下面这个C语言代码片段是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20493304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com