PsySc0rpi0n Posted September 29, 2018 at 08:01 AM Report #611945 Posted September 29, 2018 at 08:01 AM Boas. Estava a escrever uma pequena função que contém 2 if's, encadeados, mas como cada if tem apenas uma linha eu nem sequer me preocupei em colocar as chavetas para agrupar código. Mas ao escrever a função cheguei a um ponto que não consegui decidir a que if pertencia o else que estava a escrever. Esse momento foi este: ///////Create Virtual Volume file int create_vt_file(char* p_filename){ FILE* filename = NULL; if(check_if_file_exists(p_filename) == ERR_FILE_NO_FILE) if(filename = fopen(p_filename, "w")) return ERR_NO_ERR_OK; else // <-------Este pertence ao 'if' interior ou vai pertencer ao exterior? } Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
HappyHippyHippo Posted September 29, 2018 at 10:33 AM Report #611946 Posted September 29, 2018 at 10:33 AM interior IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
PsySc0rpi0n Posted September 30, 2018 at 06:45 AM Author Report #611952 Posted September 30, 2018 at 06:45 AM E porque não ao exterior? Ou melhor, e se eu não precisar de um else interior? Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
Solution bsccara Posted September 30, 2018 at 08:01 AM Solution Report #611953 Posted September 30, 2018 at 08:01 AM Porque os standards (como o C11) assim o definem; o 'else' pertence ao 'if' imediatamente precedente (páginas 148-149), que não esteja dentro dum 'compound statement' (dentro de chavetas). Se não precisares do 'else' interior tens de usar as chavetas no primeiro 'if' e pôr o 'else' depois delas.
pwseo Posted October 20, 2018 at 05:32 PM Report #612126 Posted October 20, 2018 at 05:32 PM @PsySc0rpi0n, Já tivemos esta discussão há uns anos atrás no IRC (eu, tu e mais alguns intervenientes), e foi num pedaço de código semelhante. Tens que perceber que a linguagem C não tem noção do que é a indentação do código, pelo que existem certas regras que tens que cumprir: tal como o @bsccara referiu, está plasmado nos standards que um determinado else pertence ao if que o precede. Se queres contornar as regras, utilizas um bloco definido por { e }, tal como também foi referido. Lembra-te: a indentação em C é puramente cosmética, não tem valor semântico.
PsySc0rpi0n Posted October 21, 2018 at 07:51 PM Author Report #612131 Posted October 21, 2018 at 07:51 PM On 10/20/2018 at 6:32 PM, pwseo said: @PsySc0rpi0n, Já tivemos esta discussão há uns anos atrás no IRC (eu, tu e mais alguns intervenientes), e foi num pedaço de código semelhante. Tens que perceber que a linguagem C não tem noção do que é a indentação do código, pelo que existem certas regras que tens que cumprir: tal como o @bsccara referiu, está plasmado nos standards que um determinado else pertence ao if que o precede. Se queres contornar as regras, utilizas um bloco definido por { e }, tal como também foi referido. Lembra-te: a indentação em C é puramente cosmética, não tem valor semântico. Eu sei disso. Aqui a questão era mais saber se era possível, sem o uso dos {}, fazer pertencer o único else ao if exterior! Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
thoga31 Posted October 21, 2018 at 09:17 PM Report #612134 Posted October 21, 2018 at 09:17 PM 1 hora atrás, PsySc0rpi0n disse: Eu sei disso. Aqui a questão era mais saber se era possível, sem o uso dos {}, fazer pertencer o único else ao if exterior! Então, se sabes o que o @pwseo disse, sabes que a resposta à tua questão é pura e simplesmente esta: Em 20/10/2018 às 18:32, pwseo disse: utilizas um bloco definido por { e }, tal como também foi referido Cumprimentos. Knowledge is free!
PsySc0rpi0n Posted October 29, 2018 at 10:24 PM Author Report #612227 Posted October 29, 2018 at 10:24 PM Já percebi. Eu não sabia é que este tipo de detalhes estava definido num standard e por isso, não sabendo disso, a minha pergunta era legítima. A resposta, para quem soubesse disso, à minha pergunta era "Não" e não o que o pwseo disse! Mas este assunto já está encerrado. Thanks Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
thoga31 Posted October 31, 2018 at 05:57 PM Report #612248 Posted October 31, 2018 at 05:57 PM Em 29/10/2018 às 22:24, PsySc0rpi0n disse: era "Não" e não o que o pwseo disse! Tudo bem que o assunto esteja encerrado, mas da próxima vê se tens noção do que dizes 🙂 Knowledge is free!
PsySc0rpi0n Posted November 1, 2018 at 12:27 AM Author Report #612253 Posted November 1, 2018 at 12:27 AM Epá, noção do que disse acho que sempre tive. Não sabia era da definição presente no tal standard que foi referido. Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now