一道 PHP 题,反正我是没想到

2018-01-13 12:03:59 +08:00
 abusizhishen

$a="zzz"; $a++; echo $a; 请说出答案

6245 次点击
所在节点    PHP
37 条回复
kran
2018-01-13 12:07:32 +08:00
没想到。。
我想洗地。
lihongjie0209
2018-01-13 12:10:22 +08:00
自己跑一遍不就知道答案了?
choicky
2018-01-13 12:12:56 +08:00
1 ?
azoon
2018-01-13 12:14:45 +08:00
以为是 aaa,结果是 aaaa
dream7758522
2018-01-13 12:30:11 +08:00
明显是故意显摆的题,字符串++,一般编程不会这样子写吧!
zengzizhao
2018-01-13 12:33:40 +08:00
好吧,居然还会进位
misaka19000
2018-01-13 12:44:26 +08:00
新时代的茴香豆的四种写法
dan2001go
2018-01-13 12:51:00 +08:00
脑子有病才会出这样的题目来考人。
klgd
2018-01-13 12:54:09 +08:00
我知道 ++ 时 z 被转为 ascii 码 但是不知道值是多少
klgd
2018-01-13 13:04:28 +08:00
@klgd #9 我弄错了

> 在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 $a = 'Z'; $a++; 将把 $a 变成'AA',而在 C 中,a = 'Z'; a++; 将把 a 变成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91 )。注意字符变量只能递增,不能递减,并且只支持纯字母( a-z 和 A-Z )。递增/递减其他字符变量则无效,原字符串没有变化。
stooory
2018-01-13 13:05:45 +08:00
yujieyu7
2018-01-13 13:55:50 +08:00
这面试人是想考察什么?

字符变量的算数运算?

他工作中就经常拿个字符串去这么运算?
yangbin9317
2018-01-13 14:54:22 +08:00
看这里

https://github.com/php/php-src/blob/master/Zend/zend_operators.c

第 2417 2418 行

switch (is_numeric_string(Z_STRVAL_P(op1), Z_STRLEN_P(op1), &lval, &dval, 0)) {
case IS_LONG:
zend_string_release(Z_STR_P(op1));
if (lval == ZEND_LONG_MAX) {
/* switch to double */
double d = (double)lval;
ZVAL_DOUBLE(op1, d+1);
} else {
ZVAL_LONG(op1, lval+1);
}
break;
case IS_DOUBLE:
zend_string_release(Z_STR_P(op1));
ZVAL_DOUBLE(op1, dval+1);
break;
default:
/* Perl style string increment */
increment_string(op1);
break;
}
mb135
2018-01-13 14:56:46 +08:00
反正我是不会写这种代码的
shiny
2018-01-13 15:00:52 +08:00
谁要是代码写成这样,一个巴掌就拍过去了。
zakokun
2018-01-13 15:04:55 +08:00
又来各种姿势黑 php 了,写 php 的能不能稍微提一点正常的问题?
zakokun
2018-01-13 15:05:24 +08:00
zakokun
2018-01-13 15:06:10 +08:00
@zakokun https://www.v2ex.com/t/133080#reply45 顺便看一下 V2 的这个帖子,你能懂得更多
aikunzhe
2018-01-13 16:14:08 +08:00
excel 导出时,制作表头用到,
hoyixi
2018-01-13 16:58:16 +08:00
楼上很多哥们抱怨“谁要是代码写成这样”~

当然直接写成这种代码概率很小,但是这是考题啊,简化了,只给出问题实质。 实际中,很可能是$a 是一个输入,或者某个计算、拼接、调用等等的结果,如果对这个结果是字符串而非预期的数值,然后++,就出现题目中的情况了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/422577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX