Tag: 运营商

通用产品代码挑战

我很好奇如何在C语言中正确使用%d 。 我目前正在修读C编程课程,我们在编写教科书中的代码时遇到了一个小小的挑战(C编程现代方法,KN KING)。 目标是从条形码的三个输入编辑代码: 第一个数字,第五个数字和第五个数字为最后一个输入,或 一次全部11位数。 在文本解释运算符的方式中,我认为%1d允许将输入的整数单独分配给相应的变量。 以下是编辑过的代码。 #include int main(void) { /* 11 integers that come from the bar code of the product, then 2 intermediate variables for calulation, and lastly the final answer.*/ int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, first_sum, second_sum, total; printf(“Enter the 11 digit […]

为什么操作符在CShell中是正确关联的,在C中是左关联的?

从我之前的问题开始 ,为什么CShell与C有如此不同? 4 – 3 + 1 = 2 in C. CShell中4 – 3 + 1 = 0。 有任何想法吗?

为什么`x-> 0`不是未定义的行为,而`x = x – `是?

众所周知,这循环为零: while (x– > 0) { /* also known as x –> 0 */ printf(“x = %d\n”, x); } 但是x = x–产生未定义的行为 。 这两个例子都需要一些x– “返回”值,我猜不到。 怎么能定义x– > 0但是x = x–不是?

运算符~c编程语言

~操作符如何在c中工作? 任何人都可以解释以下代码? main() { printf(“%d”,~5); } 输出为-6

如何在函数参数中评估后递增和预递增?

可能重复: c中的后期和前期增量 未定义的行为和序列点 在这里我想知道为什么这个输出来了? 任何人都可以以适当的方式解释我 #include int main() { int a=5; printf(“%d %d %d”,a++,a++,++a); return 0; } 这个程序的输出就像 在LINUX 7 6 8中

有没有办法预测未定义的行为或实现定义的行为?

#include int main(void) { int i=5; printf(“%d”, i++ + ++i); return 0; } 我知道这是未定义的行为(或实现定义),不应该使用。 但是编译器确实给出了输出而没有给出任何警告。 那么有没有预测程序的输出?

从任何观点来看,++ i和i + = 1之间的区别是什么

这是来自kn king的c编程的一个问题:一种现代的方法。 我无法理解他给出的解决方案: – The expression ++i is equivalent to (i += 1). The value of both expressions is i after the increment has been performed. 我怎么理解这个呢?

在C中,如何计算无符号数量的负数

在K&R ANSI C一书中,A.7.4.5(一元减号运算符)一节说明: …无符号数量的负数是通过从提升类型的最大值中减去提升值并加1来计算的; … 这究竟是如何计算的? 你能举一个简短的例子吗? 我不知道这怎么会产生200u的负数:从任何整数类型(有符号或无符号)的最大值减去200,并且加1不会导致-200。 我知道一元减去了什么 – 问题是我没有看到根据描述如何计算结果。

c编程中的*和&运算​​符有什么区别?

我只是确保我正确理解这个概念。 使用*运算符,我创建一个新变量,在内存中分配一个位置。 为了不必要地复制变量及其值,&运算符用于将值传递给方法等,它实际上指向变量的原始实例,而不是制作新副本……是吗? 这显然是一种浅薄的理解,但我只是想确保我没有让他们混淆。 谢谢!

i ++,i = i + 1和i + = 1哪一个更快?

我非常想知道在i++哪一个在CPU中运行最快, i+=1和i=i+1 ,我如何测量它们的执行时间?