博客
关于我
00011 面试的坑(1)断句 x=++a+b+++c++、自增和自减的面试坑i++和++i的不同、非常易错
阅读量:610 次
发布时间:2019-03-12

本文共 1093 字,大约阅读时间需要 3 分钟。

文章目录

前言

int x,a=2,b=5,c=-2;

x=++a+b+++c++;
x=多少?
在这里插入图片描述

最开始我的思路是,没看清题目 瞎搞一通 ,所以答了11,后来仔细一想 应该是 7 因为 我的认知是 ++a 在计算时就自增,而

a++ 是计算后自增,那么答案应该是7才对

int x, a = 2, b = 5, c = -2;

x = ++a+b+++c++;
那自然是
x = ++2+5+++(-2)++;
x = 3+5 + (-1)++
x = 8 - 1
x = 7

那么最后答案是 6 本来有点不信的,但是结果摆在那

在这里插入图片描述
下面我们来研究一下

我们再重新分析一遍

int x, a = 2, b = 5, c = -2;
x = ++a+b+++c++;
那自然是
x = ++2+5+++(-2)++;
x = 3+5 + (-2)++
x = 8 - 2
x = 6
发现坑在哪里了吗?
就像语文里面的断句, 断句不一样意思完全不一样
不管你同不同意,不如我们来开个车,,看下面的断句
老汉奸杀了我们所有人
不同的断句会有完全不同的解读,如下:
①老汉/奸杀了我们所有人
②老汉奸/杀了我们所有人
回到代码里面,也是一样
int x, a = 2, b = 5, c = -2;
x = ++a+b+++c++;
我之前为什么会算成 7 原因是我的“断句”有问题
我的错误断句
x = ++a+b+(++c)++;
x= 3+5+(-1)
所以就等于 7 了
正确的断句应该是
x = ++a+(b++)+c++;
x= 3+ 5 +(-2)
x=6

总结

在java代码中 一定要注意“断句”,

如 b+++c++ 意思是 (b++)+c++ 而不是 b+(++c)++, 陷入死局,变得复杂,毫无意义
必须要按照java的思路在,在此基础上随你怎么创新
一定要注意坑,也是经验不足造成的,所以要多敲代码,多跟同学、朋友、同事交流
另外就是不要去钻牛角尖

二、i++和++i的区别——远不止你想的那么简单

1)

在这里插入图片描述

知道你做错了,公布一下答案,去想一想为什么吧
在这里插入图片描述

2)

在这里插入图片描述

我知道你又写错了

公布一下答案,去看它的规律
在这里插入图片描述
如果上面的理解,下面这个就很容易理解了
在这里插入图片描述

3)

在这里插入图片描述

根据前面2道题,我们已经有些弄明白了,所以我们可以大胆的猜一猜
分别输出的是什么:
i=2
k=0
s=2
公布答案
在这里插入图片描述

4)

在这里插入图片描述

这样分别输出的又是什么?

根据上面的题目,我们已经心中有一定的思路了

大胆猜一猜,再运行看看就知道了
i=2
k=1
s=2
错了
运行看看
在这里插入图片描述

一定要运行一下看看自己的答案对不对

非常容易错!!!

转载地址:http://aogxz.baihongyu.com/

你可能感兴趣的文章
mysql 往字段后面加字符串
查看>>
mysql 快照读 幻读_innodb当前读 与 快照读 and rr级别是否真正避免了幻读
查看>>
MySQL 快速创建千万级测试数据
查看>>
mysql 快速自增假数据, 新增假数据,mysql自增假数据
查看>>
MySql 手动执行主从备份
查看>>
Mysql 批量修改四种方式效率对比(一)
查看>>
Mysql 报错 Field 'id' doesn't have a default value
查看>>
MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
查看>>
Mysql 拼接多个字段作为查询条件查询方法
查看>>
mysql 排序id_mysql如何按特定id排序
查看>>
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>
mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
查看>>
mysql 数据库备份及ibdata1的瘦身
查看>>
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
MySQL 数据库设计总结
查看>>