今天遇到的面试题,面试十个九个错
$a = 1;
$b = $a + $a + $a++;
echo $b; //输出3
echo "
";
$d = 1;
$c = $d + $d++;
echo $c; //输出3
?>
大部分人答案:
$b=5; //错的
$c=3;
这里有人知道为什么两个结果是一样的嘛
回复讨论(解决方案)
其实没有为什么,C 就是这样的
#include "stdio.h"#include "conio.h"main(){ int a=1,b=1; printf("%d %d\n", a+a++, b+b+b++); getch();}
按语法说明
$b = $a + $a + $a++;
得到 3 是符合规则的
而 $c = $d + $d++; 得到 3 是不符合规则的
因此,将 ++ 和 + 混合使用,并不能一定得到预期的结果
楼主这个是PHP哦 非C哦
结果确实是两个3哦
和php版本有关。
php4得出的是3
2
Interactive mode enabled
$a = 1;
$b = $a + $a + $a++;
echo $b; //输出3
echo "
";
$d = 1;
$c = $d + $d++;
echo $c; //输出3
?>
^Z
Content-type: text/html
X-Powered-By: PHP/4.3.2
3
2
又见坑爹无意义面试题
呵呵 面试总是很坑 戳戳锐气
第一个,计算的顺序是($a+$a)+$a++,先计算($a+$a)=2,在得到$a++的执行结果1,此时$a的值变为2,但是($a+$a)=2的结果已经存入内存,因此$a为2不影响前面的计算结果,得到(1+1)+1=3
第二个,则是先得到$d++的执行结果1,此时$d的值变为2,所以结果时2+1=3
面试的不着调,他应该考一些项目东西
第一个,计算的顺序是($a+$a)+$a++,先计算($a+$a)=2,在得到$a++的执行结果1,此时$a的值变为2,但是($a+$a)=2的结果已经存入内存,因此$a为2不影响前面的计算结果,得到(1+1)+1=3
第二个,则是先得到$d++的执行结果1,此时$d的值变为2,所以结果时2+1=3
按优先级应该是先执行++ 再执行+运算符把
你这个是先执行+然后再执行++?
第一个,计算的顺序是($a+$a)+$a++,先计算($a+$a)=2,在得到$a++的执行结果1,此时$a的值变为2,但是($a+$a)=2的结果已经存入内存,因此$a为2不影响前面的计算结果,得到(1+1)+1=3
第二个,则是先得到$d++的执行结果1,此时$d的值变为2,所以结果时2+1=3
按优先级应该是先执行++ 再执行+运算符把
你这个是先执行+然后再执行++?
第一个是非结合。此时++递增的优先级高,因此先计算$a++;
第二个是左结合,计算方向从左到右,先计算$a+$a,再计算$a++
第一个,计算的顺序是($a+$a)+$a++,先计算($a+$a)=2,在得到$a++的执行结果1,此时$a的值变为2,但是($a+$a)=2的结果已经存入内存,因此$a为2不影响前面的计算结果,得到(1+1)+1=3
第二个,则是先得到$d++的执行结果1,此时$d的值变为2,所以结果时2+1=3
按优先级应该是先执行++ 再执行+运算符把
你这个是先执行+然后再执行++?
第一个是非结合。此时++递增的优先级高,因此先计算$a++;
第二个是左结合,计算方向从左到右,先计算$a+$a,再计算$a++
既然$a++优先级高,那$a++ 以后 再计算$a+$a的时候 $a应该是2啊 怎么$a还会是1啊
感觉像大学里的无聊考试题,谁tm的在项目里这么写谁就是跟leader过不去!
------------------------------------------------------AutoCSDN签名档------------------------------------------------------
码农场??码农播种代码、放牧思想的农场!冰糖网
感觉像大学里的无聊考试题,谁tm的在项目里这么写谁就是跟leader过不去!
------------------------------------------------------AutoCSDN签名档------------------------------------------------------
码农场??码农播种代码、放牧思想的农场!冰糖网
兄弟没办法啊,谁都不想搞啊,项目中几乎不用
不过越大公司越考这些啊 唉 这家是迅雷的哦
第一个,计算的顺序是($a+$a)+$a++,先计算($a+$a)=2,在得到$a++的执行结果1,此时$a的值变为2,但是($a+$a)=2的结果已经存入内存,因此$a为2不影响前面的计算结果,得到(1+1)+1=3
第二个,则是先得到$d++的执行结果1,此时$d的值变为2,所以结果时2+1=3
按优先级应该是先执行++ 再执行+运算符把
你这个是先执行+然后再执行++?
第一个是非结合。此时++递增的优先级高,因此先计算$a++;
第二个是左结合,计算方向从左到右,先计算$a+$a,再计算$a++
既然$a++优先级高,那$a++ 以后 再计算$a+$a的时候 $a应该是2啊 怎么$a还会是1啊
说了第二个是连续加法,结合方向是从左至右,是先算($a+$a)=2的,之后再去计算$a++时,$a变为2,但是($a+$a)的计算结果已经进入内存,不再受$a值得影响。仔细去看看手册关于优先级这部分的说明吧。注意下各种运算符的结合方向
曾经出现过这样的帖子,当时我也有点纠结。在官方手册中,出现的“运算符的结合方向”是如何考虑的。
我不太了解C的运算方式。自己的解释是:
$a = 1;
$b = $a + $a + $a++;//PHP先计算了$a + $a(尽管$a++的优先级高),最后得到3
$d = 1;
$c = $d + $d++ //PHP先计算了$d++,在计算$d +
不知道这样理解对不对。
我不太了解C的运算方式。自己的解释是:
$a = 1;
$b = $a + $a + $a++;//PHP先计算了$a + $a(尽管$a++的优先级高),最后得到3
$d = 1;
$c = $d + $d++ //PHP先计算了$d++,在计算$d +
不知道这样理解对不对。
我觉得对的,其实加上括号就可以更明显的看出来优先级了。
($a + $a++);//由执行顺序//1、$a++//2、$a//再由$a = 1;$b = $a++;echo($a.'-'.$b);//结果$a为2, $b为1 即($a++)结果为1;//所以$a + $a++ = 2+1 为3//式1$b = $a + ($a + ($a + ($a + $a++)));//执行顺序//1、($a + $a++) //2、($a + ($a + $a++))//...括号优先//因为1先被执行,所以$a变量值被改变了,后面的顺序执行都会按改变的值计算//结果:$b = 2 + (2 + (2 + (2 + 1)));//式2$b = $a + $a + $a + ($a + $a++);//等同于$b = (($a + $a) + $a) + ($a + $a++);//执行顺序//1、($a + $a)//2、($a + $a) + $a)//......括号优先,相同符号 不加括号顺序执行//执行结果为$b = 1+1+1+($a + $a++) 即$b=3+(2+1)//最后$b = $a+$a++;//等同 式1$b = $a+$a+$a++;//等同 式2
就算知道茴香豆的回有好几种写法那又怎样,会一种就行了。其他的你一辈子都用不到
C那边叫Undefined behaviour(未定义行为),标准里面没规定,如何实现是编译器的事情,不同的编译器得到不同结果是正常的,或者有的根本编译不了。
研究这些东西做甚。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...
