2017-08-12 9 views
-6

Accidentellement, j'ai eu plusieurs cout dans une déclaration.Pas d'erreur/avertissement pour plusieurs cout dans une déclaration

cout<<5<<cout<<6; 

Il a affiché des déchets et j'ai réalisé mon erreur. Mais pourquoi pas d'erreur ou d'avertissement dans un tel cas? J'utilise IDE codeblocks avec MINGW pour Windows.

Edit: Le code complet est

#include <iostream> 

using namespace std; 

int main(void) 
{ 
    cout<<5<<cout<<6; 
    return(0); 
} 

Le message de construction est

mingw32-g ++ exe -Os -pedantic -Wextra -Wall -c « C: \. Etude Matériaux \ C++ \ Programmes CPP MP Compiled \ inputOutput \ q1.cpp "-o " C: \ Documents d'étude \ C++ \ Programmes CPP MP Compiled \ inputOutput \ q1.o " mingw32-g ++ .exe -o" C: \ Study Materials \ C++ \ Programmes CPP MP Compiled \ inputOutput \ q1.exe "" C: \ Documents d'étude \ C++ \ Programmes CPP MP Compilé \ inputOutput \ q1.o "-std = gnu99 Processus terminé avec statut 0 (0 minute (s), 2 seconde (s)) 0 erreur (s), 0 avertissement (s) (0 minute (s)), 2 seconde (s))

+1

Que voulez-vous dire par _no errors_ ?? [Cochez ici s'il vous plaît.] (Http://coliru.stacked-crooked.com/a/5383884462569794) – user0042

+0

Pouvez-vous montrer le code entier nécessaire pour reproduire l'erreur? – Galik

+1

Il y a * beaucoup * d'erreurs que le compilateur n'a pas besoin de diagnostiquer selon la norme. Il est entièrement sur * vous * de suivre les règles de la langue et d'écrire le bon code. Le compilateur essaie généralement d'aider quand il le peut, mais ne vous attendez pas à ce qu'il diagnostique toutes les erreurs. Juste parce que quelque chose * compile * ne veut pas dire que ça * fonctionne *. –

Répondre

2

Pourquoi le compilateur vous avertir de quelque chose qui est parfaitement légal? Vous demandez au programme de sortir le contenu de cout, ce qui est légal, et fonctionnera.

Je ne sais pas comment le operator << est défini pour cout, mais l'impression de son adresse serait mon attente, donc quelque chose comme 0x489944 (ou plus) semble juste.

Avec le 5 et le 6 autour de lui, votre sortie semble correcte: 5 + 0x489944 + 6 = 50x4899446

+0

Désolé, le résultat est garbage. Cela signifie que cela ne fonctionne pas et que l'utilisation est illégale. – Rajesh

+1

Comment savez-vous que c'est de la poubelle? Ce pourrait être l'adresse de cout. – Aganju

+0

Maintenant, votre réponse a du sens pour moi après avoir regardé les commentaires dans le message original. Peut être que vous pouvez ajouter un peu plus d'explication ce qui se passe si nous sortons un nom de fonction ou un nom de classe. – Rajesh

0

Peut-être que vous ne pas voir erreurs

1

cout est parfaitement légal en C. Cela signifie que le compilateur ne vous dira pas que tout est mauvais , comme rien ne va pas!

Cela signifie qu'aucune erreur ne s'affiche.

+0

Votre réponse est bien meilleure que la mienne ... + 1 réponse à votre question. – Adi219