C整数关闭,可能溢出
发布时间:2020-12-16 10:44:20 所属栏目:百科 来源:网络整理
导读:我正在尝试制作一个C程序,用于计算和打印用户输入的制表符,空格和行数.问题在于,当它打印出这些数字时,它们就会大放异彩.这是我的程序代码: int c,b,t,nl;b,nl = 0,0;while ((c = getchar()) != EOF) { if (c == 'b') b++; if (c == 't') t++; if (c == '
我正在尝试制作一个C程序,用于计算和打印用户输入的制表符,空格和行数.问题在于,当它打印出这些数字时,它们就会大放异彩.这是我的程序代码:
int c,b,t,nl; b,nl = 0,0; while ((c = getchar()) != EOF) { if (c == 'b') b++; if (c == 't') t++; if (c == 'n') nl++; } printf("b=%d t=%d nl=%dn",nl); 当我从终端输入一些数据时(3行,一个空格,一个标签),结果是b = 1899313536,t = 32768,并且nl = 3. 解决方法
问题出在这一行:
b,0; 它在赋值的两侧使用逗号运算符,因此只有nl初始化为零.评估左侧的b,t *和=运算符右侧的两个尾随零没有副作用(请注意,赋值具有比逗号运算符更高的优先级). 将其更改为: b = t = nl = 0; 这实际上意味着(as =运算符具有正确的关联性): b = (t = (nl = 0)); *除非b或t被声明为挥发性(因为C标准将此类对象的读数计为副作用) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |