java代码
import javax.swing.*;
public class test12
{
public static void main(String[] args)
{
int a = 3;
a -= a += a * a;
System.out.println(a)
}
}
c++代码
#include <iostream>
using namespace std;
int main()
{
int a = 3;
a -= a += a * a;
cout << a << endl;
return 0;
}
为什么两个程序打印出的a的值不同,java是-9,c++是0
Masalah ini tiada kaitan dengan operator, semuanya dikira dari kanan ke kiri, tetapi perbezaannya disebabkan oleh pemprosesan jenis nilai yang tidak konsisten oleh pengkompil.
Untuk bahasa seperti gc, termasuk (
java
,c#
,php
,javascript
), dsb., hasil operasi perantaraan bagi arahan ayat tunggal akan dicache. Memandangkan C/C++ disusun terus ke dalam arahan pemasangan dan tidak mempunyai sokongan mesin atau enjin maya, langkah ini tidak akan dapat dilakukan.Dalam istilah orang awam, untuk c++:
Maksudnya, nilai a ialah jenis nilai dan akan dikemas kini pada bila-bila masa sebagai perubahan. Tidak kira nilai a pada mulanya ditetapkan, hasilnya ialah 0. (a-a).
Walau bagaimanapun, untuk bahasa lain, mesin maya atau enjin akan menyimpan hasil pengiraan setiap langkah secara automatik.
Di atas.
Sambungan: Penyelidikan tentang algoritma penambahan aneh dalam PHP
Jangan risau tentang perkara ini, cuma tambah () di tempat yang anda rasa samar-samar.