Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah C 'std::cout` Menilai Argumen, dan Mengapa Pesanan Penting?

Bagaimanakah C 'std::cout` Menilai Argumen, dan Mengapa Pesanan Penting?

DDD
Lepaskan: 2025-01-05 08:18:43
asal
565 orang telah melayarinya

How Does C  's `std::cout` Evaluate Arguments, and Why Does Order Matter?

Tertib Penilaian Argumen dalam std::cout

Memahami cara argumen fungsi dinilai dalam C adalah penting untuk mengelakkan kejutan dalam kod anda. Dalam konteks std::cout, susunan penilaian argumen boleh mengelirukan, seperti yang digambarkan dalam contoh berikut:

#include <iostream>

bool foo(double& m)
{
    m = 1.0;
    return true;
}

int main()
{
    double test = 0.0;
    std::cout << "Value of test is : \t" << test << "\tReturn value of function is : " << foo(test) <<  "\tValue of test : " << test << std::endl;
    return 0;
}
Salin selepas log masuk

Kod ini mungkin kelihatan mencetak nilai ujian sebelum dan selepas memanggil foo fungsi. Walau bagaimanapun, output mencadangkan sebaliknya:

Value of test is :      1       Return value of function is : 1 Value of test : 0
Salin selepas log masuk

Tingkah laku ini disebabkan oleh susunan penilaian yang tidak ditentukan dalam ungkapan. Walaupun ia mungkin kelihatan intuitif untuk hujah yang paling jauh ke kanan (nilai ujian) untuk dinilai dahulu, ini tidak dijamin.

Untuk memastikan susunan penilaian yang diingini, bahagikan secara eksplisit ungkapan kepada pernyataan yang berasingan, sebagai ditunjukkan di bawah:

double value = test;
std::cout << "Value of test is : \t" << value << "\tReturn value of function is : " << foo(test) <<  "\tValue of test : " << test << std::endl;
Salin selepas log masuk

Ini memastikan bahawa nilai ujian disalin ke dalam nilai sebelum fungsi foo dipanggil. Hasilnya, output kini menggambarkan susunan penilaian yang dijangkakan dengan tepat:

Value of test is :      0       Return value of function is : 1 Value of test : 1
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah C 'std::cout` Menilai Argumen, dan Mengapa Pesanan Penting?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan