社区
C语言
帖子详情
C语言有点不理解的地方,求真相
Boyce_Gao
2010-05-25 06:57:01
#include<stdio.h>
int main()
{
int num[] = {0,1,2,3,4};
int k = 2;
printf("%d %d\n",num[k++],num[k++]);
return 0;
}
为什么输出 2 2 ?
谢谢!
...全文
256
33
打赏
收藏
C语言有点不理解的地方,求真相
#include int main() { int num[] = {0,1,2,3,4}; int k = 2; printf("%d %d\n",num[k++],num[k++]); return 0; } 为什么输出 2 2 ? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Boyce_Gao
2010-05-28
打赏
举报
回复
谢谢,突然想到这个,运行后看见跟想到的不同
andyqin1989
2010-05-26
打赏
举报
回复
像这样的问题,自己明白就行了,根本不用写出有歧义的代码。
liutengfeigo
2010-05-26
打赏
举报
回复
iasky PHP的大牛。跑这里来了。。。呵呵~~
yuanzhang198711
2010-05-26
打赏
举报
回复
[Quote=引用 18 楼 nbda1121440 的回复:]
为什么大家都喜欢将一些有歧义的语句拿出来问呢?
其实这些题目本身就不是很好的,
我的老师都不让我们这么这么写的
[/Quote]
确实,代码越简洁明了越好,目的一是要让看懂,更要让编译器看懂。
cffa_edfe
2010-05-26
打赏
举报
回复
___不推荐__
这种代码除了考试用_没有什么意义___何况不同编译器编译的结构还不一样
它损失了代码的可读性和可移植性__
c_song
2010-05-26
打赏
举报
回复
题目本身不重要,
内涵重要点
就是要我们理解,运算的优先等级,运算的次序
尤其是++ -- 一类的东西,在程序中运用超多
yangyunzhao
2010-05-26
打赏
举报
回复
标准里面未定义的东西,由各个编译器自行实现,根本没有必要讨论。
建鼎呓语
2010-05-26
打赏
举报
回复
一般来说,在一个表达式中,++在前,就先自加,再运算;++在后,就先运算,再自加。
不建议,在调用函数时,对参数使用自加自减,根据编译器不同,结果会有出入。
Programming_infinity
2010-05-26
打赏
举报
回复
实际上k的值是在整个printf语句结束后才一次性自加两次的,所以在printf语句中k的值没有变化
yustinyxl
2010-05-26
打赏
举报
回复
编译器的问题.如何你使用其他编辑器也会有其他的结果.只要你懂的自加的先与后就可以了。
ArtiFly2000
2010-05-26
打赏
举报
回复
不要再一个表达式中,多次去改变一个变量的值
结果未定义,或者说结果由具体实现定义
golduty2
2010-05-25
打赏
举报
回复
printf 貌似跟他的输出计算方式也有关 好像是压栈式的 记不清了 不过你可以跟到更底层 去看看 mark 学习
yu103
2010-05-25
打赏
举报
回复
跟编译器执行顺序有关,答案应该是多种多样的
qq120848369
2010-05-25
打赏
举报
回复
这个地方很特殊,编译器有关。
Zhao01081122Heng
2010-05-25
打赏
举报
回复
k++是先使用再再自加 ++k先加再使用
周靖峰
2010-05-25
打赏
举报
回复
为什么大家都喜欢将一些有歧义的语句拿出来问呢?
其实这些题目本身就不是很好的,
我的老师都不让我们这么写的
nicejack
2010-05-25
打赏
举报
回复
呵呵!我开始学的时候老师叫我把k++的值赋值给一个变量啊变量的值就是表达式的值啊!其实是编译器在编译的时候先把值赋给那个变量再是K的值加一啊
gyjdk0601
2010-05-25
打赏
举报
回复
学习了!
zhaiershuaixu
2010-05-25
打赏
举报
回复
与编译器有关,但是在vc++6.0中输出的是2,2。
hetuo
2010-05-25
打赏
举报
回复
编译器?
加载更多回复(13)
c语言
伟大,是什么能够使
C语言
这么强大
#编程#其实编程语言就像个动物世界,弱肉强食。而
C语言
存在了这么久,还一直在发展,总归有它的原因,那是什么使它能够这样呢?简短答案:它是由专业人士创建和开发的,旨在解决他们在1960年代末/ 1970年代初遇到的一个问题,事实证明,很多人都遇到了同样的问题。他们将所需的内容放入其中,而忽略了不需要的内容。但是40多年后C的长期保持能力,对原始概念的几乎没有任何变化,这表明设计师们做对了。更长的答案...
初学者怎么高效率学习
c语言
?
想学
C语言
我们首先的了解
C语言
是什么?它是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。
C语言
能以简易的方式编译以及处理低级存储器。
C语言
是仅产生少量的机器语言以及不需要任何运行环境支持就可以运行的高效率程序设计语言。尽管
C语言
提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的
C语言
程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译
C语言
是计算机体系结构的基础,向下可以操作硬件(包括ARM、DSP、单片机等各种微处理器),还可以写驱动、写
C语言
陷阱和缺陷
C语言
陷阱和缺陷[译序] 那些自认为已经“学完”
C语言
的人,请你们仔细读阅读这篇文章吧。路还长,很多东西要学。我也是…… [概述]
C语言
像一把雕刻刀,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能掌握它的人。本文介绍
C语言
伤害粗心的人的方法,以及如何避免伤害。 [内容] 0 简介 1 词法缺陷 1.1 = 不是 == 1.2 & 和 | 不是 &...
C语言
指针其实也没有那么难
本章内容是指针的内容,有哪些
地方
写的不好还请多多指点。😊首先说一下指针的初级知识点什么是指针。按传统的方式来讲:内存单元是什么呢?就好比现实生活中我们的房间,不就是哪个单元哪个房间号嘛。我们用画图的形式来展示。指针是个变量,存放内存单元的地址(编号)。用代码方式表示: 简单的来说: 指针就是个变量,这个变量是用来存放地址的。(存放到指针变量中的值都将被当作地址处理)。比如说: int* p = 12;数据在内存中都是地址的形式存放的,而在内存中地址是以4位16进制和8位16进制表示的,而12的16进制
C语言
怎么系统化的高效学习?
今天给大家分享一个学习路线,也算是给这段时间
C语言
系列的一个总结,大家按图索骥,能够飞快的掌握
C语言
。
C语言
指针很难学?给你最直接的解决思路!首先我想说下,
C语言
是非常重要的语言。为什么这...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章