2010-03-23 23 views
5

Những câu hỏi này là một loại trò chơi và tôi không tìm thấy giải pháp cho chúng.
Có thể viết ::: bằng C++ mà không sử dụng dấu ngoặc kép hoặc bất kỳ thứ gì như thế này và trình biên dịch sẽ chấp nhận nó (các macro cũng bị cấm).Làm thế nào để viết một cách hợp pháp ::: trong C++ và ??? trong C#?

Và điều này cũng đúng với C#, nhưng trong C#, bạn phải viết ???.

Tôi nghĩ C++ sẽ sử dụng toán tử phạm vi :: và C# sẽ sử dụng ? :, nhưng tôi không biết câu trả lời cho chúng.

Bất kỳ ý tưởng nào?

+13

những gì trong ngọn đồi sam –

+6

Tôi đoán đây là một câu hỏi bài tập về nhà đã được đặt thông qua một máy xay sinh tố từ. –

+0

Những câu hỏi này được trao cho chúng tôi vào đầu bài giảng: "nếu ai đó đã biết chủ đề này, họ có thể làm việc trong câu hỏi này" :) – nbitd

Trả lời

4

Bạn có thể viết ba dấu hỏi liên tiếp trong C# mà không có dấu ngoặc kép, nhưng không phải không có khoảng trắng, sử dụng toán tử null-coalescing và nhân vật bí danh nullable:

object x = 0; 
int y = x as int? ?? 1; 
0
I think C# will use ? : 

Bạn có nghĩa là sử dụng ba dấu chấm hỏi trong cùng một dòng?

var a = true ? new Nullable<int>(1) ?? 1 : 0; 

Edit: như xa như tôi biết, nó không thể viết ??? trong bất kỳ phiên bản của C#.

1

Với khoảng trắng, thật dễ dàng:

C++

class A{}; 
class B : :: A{}; 

hoặc

int foo; 

int bar(){ 
    return decision ? -1 : :: foo; 
} 

Nhưng không có khoảng trống, những thứ này sẽ không biên dịch (trình biên dịch xem :: :, không có ý nghĩa gì).

Tương tự, Aaronaught đưa ra ví dụ tốt về ? ?? trong C#, nhưng không có khoảng trống, trình biên dịch sẽ xem nó là ?? ?, sẽ không biên dịch.

+0

Bạn có tham chiếu rằng trình biên dịch C# xem '???' là '?? ? '? Nó làm cho cảnh nhiều hơn mà trình biên dịch không * xem * nó ở tất cả. –

+0

@Mendy: Không có khoảng trống ('???'), trình biên dịch đưa ra hai lỗi: "Cụm từ biểu thức không hợp lệ '?'", Nằm ở dấu hỏi thứ ba và "; dự kiến" nằm sau nó. Nếu bạn đặt một không gian để nó là '?? ? ', bạn nhận được hai lỗi giống nhau tại cùng một vị trí [tương đối]. Về cơ bản, đó chính là "munge tối đa" mà user168715 đã đề cập trong một nhận xét cho câu hỏi ban đầu. –

Các vấn đề liên quan