Cosa significa un punto interrogativo (?) In C?Cosa fa? in C?
risposta
?
è il primo simbolo del operatore ternario ?:
.
a = (b==0) ? 1 : 0;
a
avrà il valore 1 se b
è uguale a 0
, e 0 altrimenti.
È un operatore condizionale. Per esempio fare riferimento al link qui sotto http://en.wikipedia.org/wiki/Conditional_operator
Questo è probabilmente una parte del ternary operator:
const int numApples = …;
printf("I have %i apple%s.\n", numApples == 1 ? "" : "s");
Solo per salvare le generazioni future su qualsiasi confusione qui. È "l'operatore condizionale". Capita semplicemente di essere un operatore ternario, di cui ce n'è solo uno in C e C++. Ci sono anche molti operatori unari (~,!, -) e binari (+, -, <<) in C/C++. Neato! –
sua l'operatore ternary
, vedere http://en.wikipedia.org/wiki/Ternary_operation#C.2C_C.2B.2B.2C_C.23.2C_Objective-C.2C_Java.2C_JavaScript.2C_ActionScript
Si tratta di un cosiddetto operatore condizionale. Puoi abbreviare la tua istruzione if else con questo operatore.
Il seguente collegamento dovrebbe spiegare tutto
http://www.crasseux.com/books/ctutorial/The-question-mark-operator.html
In aggiunta ad altre risposte, ?
può essere parte di un trigraph.
Può anche essere parte di una stringa o di un carattere in generale senza essere un trigrafo: 'char c = '?'; char const * s = "?" '. –
Questa è una ternary Operator che è operatore condizionale utilizza come if-else
esempio
int i=1;
int j=2;
int k;
k= i > j ? i : j;
//which is same as
if(i>j)
k=i;
else
k=j;
utilizzati: Sintassi di : è
assignment_Variable = Condition ? value_if_true : value_if_false;
Più probabilmente il '?' è l'operatore ternario. La sua grammatica è:
RESULT = (COND) ? (STATEMEN IF TRUE) : (STATEMENT IF FALSE)
è una bella scorciatoia per il tipico istruzione if-else:
if (COND) {
RESULT = (STATEMENT IF TRUE);
} else {
RESULT = (STATEMENT IF FALSE);
in quanto di solito può stare su una sola riga e può migliorare la leggibilità.
Alcune risposte qui si riferiscono a un trigramma, che è rilevante per il preprocessore C. Date un'occhiata a questo programma veramente stupido, trigraphs.c
:
# /* preprocessor will remove single hash symbols and this comment */
int main()
{
char *t = "??=";
char *p = "??/"";
char *s = "??'";
??(, ??), ??! ??<, ??>, ??-
return 0;
}
invocare solo la c preprocessore eseguendo gcc -E -trigraphs trigraph.c
l'uscita è
int main()
{
char *t = "#"
char *p = "\"";
char *s = "^";
[, ], | {, }, ~
return 0;
}
Speriamo che chiarisce un po 'quello che un trigrammi sono, e ciò che un '?' "significa" in C.
- 1. Cosa fa "12345" + 2 fa in C?
- 2. cosa fa int() in C++?
- 3. Cosa fa esattamente # in C?
- 4. Cosa fa "for (;;)" in C#?
- 5. C++ - cosa fa [=]?
- 6. Cosa fa '&' fare in una dichiarazione C++?
- 7. Cosa fa ?? operatore significa in C#?
- 8. Che cosa fa __asm__ __volatile__ in C?
- 9. C# cosa fa l'operatore == in dettaglio?
- 10. Cosa fa il segno '$' in C# 6.0?
- 11. Cosa fa l'operatore >> in C#?
- 12. Cosa fa !! significare in Objective-C
- 13. Cosa fa "* (pointer + intero)" in C++?
- 14. Cosa fa il doppio? significa in C#?
- 15. Cosa fa @class in Objective-C?
- 16. Cosa fa?
- 17. Cosa fa === in PHP
- 18. Cosa - fa in Excel?
- 19. Cosa fa == in Ruby?
- 20. Che cosa fa l'attributo C# CoClass?
- 21. Cosa fa l'operatore | = fa in JavaScript?
- 22. Cosa fa questo codice C [dispositivo Duff]?
- 23. Cosa fa addScalar?
- 24. Cosa fa [:]?
- 25. Cosa fa std :: thread.join()?
- 26. Cosa fa [STAThread]?
- 27. Foo.class cosa fa?
- 28. Cosa fa il^do?
- 29. DefaultMemberAttribute - che cosa fa?
- 30. Cosa fa effettivamente Process.Dispose()?
Potresti fornirci un esempio contestuale di dove stai vedendo il '?'? –
@ bitcrazed: Solo curioso: a quale altro uso stai pensando l'operatore ternario? – chris
@chris è anche (in codice seriamente vecchio) parte di un [trigraph] (http://msdn.microsoft.com/en-us/library/bt0y4awe.aspx), come Benoit mi ha battuto per rispondere. – Rup