还是c语言的问题 每天在学习每天都有新问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 15:26:33
1.设有定义:int k=1,m=2; float f=7,表达式-k++和k>=f>=m正确吗?如果正确,应当怎样理解?错误,原因在那里,希望详解。
2.这段程序是怎怎么运算的?
int k=2;
printf(%d%d%d%d,k,k++,++k,++k);
3.算术运算符中实数的整除和负数的整除究竟是怎么一回事。
先给20分,酌情加分,谢谢。
zpjzps,你忽略了k++前面还个负号,是-k++,再就是第二个题目在Vc下的输出结果是4,4,4,3
其实第一题和第二题觉得还是i++和++i形式的区别。
250185880有提到递加运算符要比单目运算符优先级高,其实-和++同为单目运算符优先级相同。另外第二题输出结果4,4,4,3是我在vc下测试输出的结果。
我是这样理解的,不知道对不。i++形式先取值运算,语句结束后自加,++i形式先自加后取值运算。那么-k++就属于i++形式,先取值取负,然后执行自加.
int k=2;
int z=-k++; //输出z=-1 k=2,与这个结果是匹配的
第二题同理,自右向左运算,++k先自加然后取值,输出3,此时k=3,再执行第二个++k,输出4,k值变为4,然后执行k++,此时k值仍然为4,但是这里的自加是在printf()语句执行完之后才会发生,所以在printf输出时k值仍然是4,为了验证做了点改动
int k=2;
printf(%d%d%d%d,k,k++,++k,++k); //这里输出4,4,4,3
printf("k=%d\n",k); //输出5,证明在上一个printf()执行完后还执行了一次自增
不知道是不是巧合。
哎哟,这些破题目还不是为了考试,谁写程序这样写啊

1.递加运算符要比单目运算符优先级高,所以-K++应表示的意思是-(K++),是正确的,后边k>=f>=m 类型不一样不能比较,除非强制转换类型
2. 结果应该是 5,4,4,3 原因:递增递减运算是自右至左计算的 ,但是输出顺序还是按格式化输出~ 不是 4 4 4 3 ~要仔细看清楚哦~
3.这要看你具体做什么运算了,问题不太清楚~
希望对你有帮助~~~

你说的没错,单目运算符优先级相同,但是在同一优先级里的等级还是不一样的。你说算术运算符是一个优先级吧?乘除的等级要比加减高吧?还有单目运算符的非运算,是不是比其他的都要高呢?
应该是编译器的原因~我在DEV-C++下输出是 5,4,4,3
正确的解释也应该是5,4,4,3 。

你的问题有点不清楚
k++是对的表示k自加1,后面的不太对k>=f>=m因为他们不能连接比较 还有就是他们不是一个类型的不能比较。
2 的结果是2,3,2,2
4实数的整除和负数的整除和加减一样

为什么要写这么*@#$$^&**%$&的句子,有什么意义?

记下了,我也想看看答案。

编译一下就知道对错了。

用花哨的表达方式以后还会天天都有问题的。如果是书上写的就是作者脑子里进水了。

用朴实些的表达式和保守的语句写法至少大家都看得懂,现代的编译器优化后的代码和花哨些写的都一样。

楼上的已经说过的我就不说了.

1. 正常的编程人员都会写 -(K++) 或(-K)++. 大家通常不接受 -k++.

2. 同上. 这种情形属于C语言设计漏洞, 在新的语言中和实际工作中这种情形是大家在尽力避免的. 绝对不提倡.

3. 我猜你想问的大概是5/2 或 -5/2的整数答案是多少吧? 按照国际惯例 5/2 的整数答案是2, -5/2 的答案是-2还是-3曾经也引起过很大争议. 但是大多数电脑商采用的是使用 - (5/2) 的结果.