我在C中做了一些逻辑任务,当我手工评估时,一些结果与CodeBlocks打印的结果不同。
将先前执行的指令考虑在内的以下表达式的十进制值是多少?
这里有数字(我不明白用&#34签署的行的输出;<<<<<<<<<"):
int i, j, k, *p2i;
float fp;
p2i=&k;
i=0x22;
j=025;
k=25;
++k;
k++;
k|7&12; <<<<<
fp=10/20; <<<<<<
fp=(float)10/20; <<<<<<
答案 0 :(得分:3)
class Setup_Info(tk.Frame):
list1=[]
list2=[]
list3=[]
list4=[]
def __init__ ...
答案 1 :(得分:2)
k=25;
++k;
k++;
k|7&12;
在前3行之后,k
为27.在第四个表达式中,按位AND运算符&
的优先级高于按位OR运算符|
,因此它等效于27|(7&12);
将值转换为二进制为我们提供11011|(00111&01100);
内部评估为00100
,然后11011|00100
评估为11111
,即31。
此表达式的值出现在void
上下文中(即它未分配给任何内容)并被丢弃。
fp=10/20;
常量10
和20
都是int
类型。因此执行整数除法,结果为0.然后将该值转换为float
并分配给fp
。
fp=(float)10/20;
常量10
已投放到float
,然后除以20
。由于其中一个操作数的类型为float
,因此另一个操作数被提升为类型,并执行浮点除法,从而生成0.5
。然后将该值分配给fp
。