分析:字符char型与数字的转换可以通过+-'0'实现
char c = '0'; int ic = (int)c; ic会=48,这就是ASCII码值。
那么'8'变成数字8就是 '8'-'0'。int ic = '8'-'0'; ic=8.
---------
上面的函数应该实现的功能是:字符串模拟数字运算!
c=s[0][i]+s[1][i]-2*'0'; 实际上是 c=(s[0][i]-'0') + (s[1][i]-'0'); 转整数然后相加!
又来s[0][i] = c%10 + '0'; //c%10是取个位的意思,另外如果是'\0'的话就无意义了,应该用'0',意思就是把数字再转成字符!
---------
这样改后的意义就是两个数各个位相加,再取该和的个位代替该位
8 9 8 0 +
9 1 9 8
17 10 17 8 // 相加求和
7 0 7 8 // %10 取个位
a=d/10%9;
表达式的计算是
25/10=2
2%9=2
所以a值为2
b=a&&(-1);表达式是
2&&-1
C语言中非零即为真,&&运算符两边结尾真,所以结果为真。
又因为C语言中关系运算和逻辑运算的结果,以1为真,以0为假。
所以最终变量b被赋值成1
#include
void main( )
{
int i,c;
char s[2][5]={"8980","9198"};
for(i=3;i>=0;i--)
{
c=s[0][i]+s[1][i]-2*'0';
s[0][i]=c%10+'\0';
}
foe(i=0;i<=1;i++)//应该是for( ; ; )
puts(s[i]);
}
结果为9198
你这两个问题...自己把代码拿去编译运行一下不就都能知道了么.