Rumah > Soal Jawab > teks badan
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
黄舟2017-04-18 09:29:33
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++:
a=3*3;//9
a=a+a;//18
a=a-a;//0
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.
int a=3;
int result=0;
result=a*a;//9
result=a+result;//3+9=12
result=a-result;//3-12=-9
Di atas.
Sambungan: Penyelidikan tentang algoritma penambahan aneh dalam PHP
PHP中文网2017-04-18 09:29:33
Jangan risau tentang perkara ini, cuma tambah () di tempat yang anda rasa samar-samar.