CONDITIONS and BRANCHES in C++ (if statements)

Поделиться
HTML-код
  • Опубликовано: 27 дек 2024

Комментарии •

  • @kauht
    @kauht 8 месяцев назад +100

    6 years later and this is still the highest quality c++ tutorial on the internet, thanks!

    • @weltgeist.
      @weltgeist. 6 месяцев назад

      ikr

    • @rowansteve-ng3fs
      @rowansteve-ng3fs 4 месяца назад +1

      you haven't seen this channel called code beauty

    • @NovacStudios
      @NovacStudios 4 месяца назад

      @@rowansteve-ng3fs Isn't she the one who does them like 10+ hour vids?

    • @VervainSeller
      @VervainSeller 2 месяца назад +1

      true

    • @kauht
      @kauht 2 месяца назад

      @@rowansteve-ng3fs wym "you haven't seen"?

  • @zyris863
    @zyris863 7 лет назад +531

    I'm in college and you explain this stuff a lot better than my professors. Thank you so much for this. Keep it up!

    • @spattermann5809
      @spattermann5809 6 лет назад +40

      When the professors or TAs (teaching assistants) actually speak english (not a given) they don't actually teach instead they are culling. You only pass if you can teach yourself from over-priced and badly written textbooks or already know the material. To say I am disenchanted with US higher education is a broad understatement.

    • @klarnorbert
      @klarnorbert 5 лет назад +14

      This is why you don't go college if you want to do software engineering.

    • @guilhermezardo7671
      @guilhermezardo7671 4 года назад +3

      @@klarnorbert you can do both

    • @appsenence9244
      @appsenence9244 3 года назад +4

      why would anyone attend university?

    • @yeadatwunyt8004
      @yeadatwunyt8004 3 года назад +5

      @@spattermann5809 It's not just the US

  • @12isaac00
    @12isaac00 5 лет назад +565

    "else if is just an if nested into an else"
    my life is a lie

    • @comradepeter87
      @comradepeter87 4 года назад +6

      _EDIT: I'm letting the old example rot at the end, as it caused a lot of confusion. You'll eventually see even this example is wrong, but it better illustrates my thought process at the time._
      If "else if" is just a nested if into an else, then this block of code should compile, but it doesn't:
      #include
      using namespace std; //Sorry guys I couldn't resist
      int main() {
      int x = 7;
      if (x == 7) cout

    • @beesknees8296
      @beesknees8296 4 года назад +35

      @@comradepeter87 Not sure if I am completely understanding what you're saying but the reason that code does not compile is because you cannot have a stand alone else. If...else come in pairs and else are linked to the closest incomplete if. Your first else is paired with if and the second else is not paired with anything. That is why the program doesn't compile.

    • @NphiniT
      @NphiniT 4 года назад +10

      @@comradepeter87 else-if is a nested if into an else not else. That is, else is not a nested if into an else!

    • @NphiniT
      @NphiniT 4 года назад +2

      @@beesknees8296 You don't get it LOL!

    • @bharat_132
      @bharat_132 4 года назад +11

      I kinda understand what you say...
      Let me try to explain , I may be wrong... Plzz feel free to correct me...ill just wright the code part
      ,......,.............
      If(x==3) cout

  • @linavabai8470
    @linavabai8470 Год назад +3

    Thanks! I'm learning so many new stuff from your videos.

  • @danielandrejczyk9265
    @danielandrejczyk9265 7 лет назад +223

    "Compiler will do some magic... and you'll get rekt" XD

    • @sablanex
      @sablanex 7 лет назад +13

      Best part :)

    • @martingaens2073
      @martingaens2073 5 лет назад +4

      i thought it was 'get rekt' lol. Even youtube auto generated subtitles say it's get rekt.

    • @joshuarowe8410
      @joshuarowe8410 4 года назад +5

      @@martingaens2073 holy shit that's pretty funny. Im surprised the auto-generated subtitles use 'rekt'

    • @martingaens2073
      @martingaens2073 4 года назад +6

      @@joshuarowe8410 yeah, I guess it has to adapt to the meme culture

    • @danielandrejczyk9265
      @danielandrejczyk9265 4 года назад +2

      Fixed wrecked to rekt... nice

  • @henrikhey4184
    @henrikhey4184 7 лет назад +531

    Please make some assembly tutorials!

    • @小龙的梦
      @小龙的梦 7 лет назад +10

      why

    • @merijnvinea3546
      @merijnvinea3546 7 лет назад +2

      Henrik Hey Do it!!

    • @henrikhey4184
      @henrikhey4184 7 лет назад +36

      cronnostiger64 personally, I think that assembly is extremely useful, especially when it comes to optimization. If you look at the source of any major game engine they all have parts written in assembly.

    • @henrikhey4184
      @henrikhey4184 7 лет назад +6

      ***** No problem! Check out the source for the idtech3 engine (doom3 engine) sometime it's all on github and really shows off the full power of c++ :) it's one of my favorite piece's of source to read through!

    • @henrikhey4184
      @henrikhey4184 7 лет назад +5

      *****​​​​ Absolutely! I would however recommend reading through the Idmath library in the project in that case :). I understand computer graphics somewhat, I still struggle with the API's however lol(opengl and vulkan), as for learning it, I'd recommend the tutorials offered by the cherno, thinmatrix(even though he uses java, the GL is the same) also recommend checking out the computer graphics series by computerphile(they give an awesome explanation of things like how matrices work, how the scene is rasterized and how the depth buffer is created!). And overall reading through blogs is also extremely useful, just remember to start with the fundamentals and work your way up!

  • @thepollardbull
    @thepollardbull 3 года назад +31

    Good distinction of programming falling into two categories,
    1. Mathematical programming
    2. Logical programming

  • @Steven-tw7iz
    @Steven-tw7iz 7 лет назад +24

    I think an assembly tutorial/video would be a great idea. It really shows how the code write will end up working down at the metal. And gives new people a look into just how much the compiler can optimize your code without you realizing

  • @kickbuttowsk2i
    @kickbuttowsk2i 5 лет назад +12

    that "else if" part alone convinced me to watch the entire series

  • @straddlescout1220
    @straddlescout1220 6 лет назад +25

    "The little bit extra" This is why I love this series

  • @qidex
    @qidex Год назад +9

    You cover a lot of basic things I'm already thoroughly familiar with, but you do it in such a clear progression of explanation.
    You also still have some things that are new to me, like the dissassembly view.
    May not be what I personally need, but very well done.

  • @TheRossmclane
    @TheRossmclane 6 лет назад +58

    Please make videos on assembly! These are so cool.

  • @Roxaro
    @Roxaro 12 дней назад

    was gonna watch it in 2x because I knew conditions, but couldn't after you started to talk about disassembly, your videos really informative and helpful.

  • @ascii6715
    @ascii6715 10 месяцев назад

    I'm a computer science student and I am trying to learn C++ not for academical purposes but just a fun. I watched so many computer science videos on RUclips. Every channel I watched just explain "How does it used?". It was not satisfied. My friend suggested to me watch you and now hopefully, I listened him. I'm glad to meet your channel.

  • @BOTHLine
    @BOTHLine 7 лет назад +74

    Yes, please an assembly tutorial!

  • @ugib8377
    @ugib8377 17 дней назад

    That little else if tidbit at the end was really cool. Learned something today!

  • @xristosbart8217
    @xristosbart8217 7 лет назад +51

    Please, a video for a brief explanation in assembly would be a good idea, not in great extent, just enough to follow debugging.
    Also, I think you should start the OpenGL series in parallel looking forward to that!
    Great series, we appreciate the fact that you go deeper in some points, it gives us a better understanding.
    Keep up the great work!

  • @Tomasxt25
    @Tomasxt25 7 лет назад +80

    I would love some assembly videos!!!! Great video anyways

  • @fendoroid3788
    @fendoroid3788 7 лет назад +149

    do you code like this
    {
    }
    or like this {
    }
    ?

    • @pradyumnkejriwal3007
      @pradyumnkejriwal3007 7 лет назад +26

      Fendoroid
      In functions, 1st one
      In if, while, etc. statements, 2nd one

    • @lewisb8634
      @lewisb8634 7 лет назад +44

      Fendoroid Always the second one. I find it a lot clearer, although I can understand why people may find the first one clearer. Which one do you use?

    • @jonatanahnh
      @jonatanahnh 7 лет назад +14

      Depends on the language convention
      For example in js the convention is {
      } but in c
      {
      }

    • @resantic2256
      @resantic2256 7 лет назад +39

      {
      }
      Makes it easier to see which brackets make up a block together

    • @fendoroid3788
      @fendoroid3788 7 лет назад +3

      Lewis B I used to put the open brace on a new line, but now I put it on the same line: it looks more compact.

  • @dani485b
    @dani485b 7 лет назад +4

    20:58 "else" "hand gestures* " if"
    have to love that explanation, nice video as always Cherno! :)

  • @richardrisner921
    @richardrisner921 3 года назад +1

    What I learned about C++ today: "anything really goes"
    This is even better than Python!

  • @madhuhadas15370
    @madhuhadas15370 8 месяцев назад +1

    I am glad I found this channel. Thank you very much.

  • @kostiapereguda
    @kostiapereguda 2 года назад

    for the ones who were confused at 12:10, JE will jump if result of test instruction is EQUAL to 0, and test is bitwise AND, so if comparisonResult is 0, then the test of 0 and 0 will be 0 and we will skip printing "Hello", but if comparisonResult is 1, then the test of 1 and 1 will be 1 and so we will not jump because 1 is not equal to 0

  • @jeremygong4190
    @jeremygong4190 3 года назад +1

    I love your vids not only because every time I've learned so many new tricks within the old boundary of my knowledge; but also, I was able to understand the principle and the reasoning behind it. Those vids do make everything look so transparent, and do enhance my thought to view the codes in a much grander perspective. It feels like the difference between solving a physics problem using mere equations from the book (seek-and-match progress) and solving this problem by your understanding of its mathematical principle (deriving your own equations). GROUNDBREAKING lessons! I will spent the rest of two days finishing every single vid from this watch list!

  • @woolwizard1967
    @woolwizard1967 5 лет назад +2

    It's so fascinating how i can still learn stuff about these things, that i already used for years in your videos. Simply amazing

  • @dimpap9659
    @dimpap9659 2 года назад +2

    Finally someone who teaches cpp in a proper & in a way that is easy to understand ! Our Professor also was trying to tech real cpp, the problem was that he doesnt understand how hard this things are if you just start to learn cpp, probably cause he's doing it for so long. Ty you saved me some cp :)

  • @BigCatSoftware
    @BigCatSoftware 7 месяцев назад

    So far this series is really intuitive and easy to learn from. Thank you Cherno!

  • @Mark-xh6tl
    @Mark-xh6tl 6 лет назад

    Only someone whose mind would be blowned by finding out else if is not a keyword would be this enthusiasic about all these details.

  • @w3w3w3
    @w3w3w3 5 лет назад +6

    Great video again. Really interesting as well, and you explain the 'ins and out' of things as well, instead of just typing code and us copying it with no real understanding, which a lot of other people just do. Thanks for putting in the time to make these videos and series.

  • @kanutaro3426
    @kanutaro3426 2 года назад

    The dissassembly part was brilliantly explained, first time I'm actually understanding this

  • @jakhongirnematov5588
    @jakhongirnematov5588 3 года назад +13

    This series is extremely helpful, thanks for the simple yet deep explanations. And yes, if you have time can you make an assembly tutorial?

  • @chimpionboy
    @chimpionboy 6 лет назад +10

    Wow. Interesting. I'm so in love with C++

  • @itsNixy
    @itsNixy 2 года назад +1

    @The Cherno Your C++ series is absolutely amazing. Please, please do make a series on Assembly as well!
    Thank you for your great explanations. As someone with some previous experience, I still learn new things in almost every one of your videos in this series.

  • @habsburger8500
    @habsburger8500 5 лет назад

    @Cherno
    Best C++ Teacher!
    I have been looking around for 2 Years.
    You are the REAL TheNewBoston!
    And please...
    YES, do something on Assembly. Would love so much.
    Thanks for everything Cherno.

  • @nfrancisj2122
    @nfrancisj2122 5 лет назад +1

    You talk so much, and I love it. The depth of your explanations really helps explain why things work the way they do. Thanks!

  • @kenlaw3376
    @kenlaw3376 6 лет назад

    Thank you! You are light years ahead of all other tutorials on RUclips because you take time to explain. Most others just type fast and say, don’t worry about what I’m doing, just do it. You are the best.

  • @ButterBeanCW
    @ButterBeanCW 2 года назад

    I don’t even understand assembly, but to see you step through the registers with the code beside it made so much sense!

  • @mallelasaicharan6257
    @mallelasaicharan6257 Год назад

    this is a really UNDERRATED channel.

  • @augustlehman6462
    @augustlehman6462 11 месяцев назад

    great! tutorial, in depth tutorial, on not only C++ but on computer programming in general; many thanks,

  • @ommaswale1454
    @ommaswale1454 Год назад

    can't believe this cool playlist was created 6 years ago

  • @amirrezasadeghi5755
    @amirrezasadeghi5755 5 лет назад

    thanks for explaining things from scratch. it is so valuable to see what actually is going under the hood of the c++. thanks a lot.

  • @harshalrathi8332
    @harshalrathi8332 2 года назад

    Hi Cherno, this series is well bought up, thank you for detailed explainations, mistakes and corrections, some new pts. and explaining via registors too. This was super fun and I hope you keep making new such videos. Thanks...😊😊😊😊

  • @arkemal
    @arkemal 2 года назад

    I loved the Disassembly part, well done Cherno!

  • @pf8662
    @pf8662 3 года назад

    Please assembly tutorial! Your explanation is so clear and detailed! I had learned so much from you everytime despite my school had teach the topic before.

  • @mamazu1995
    @mamazu1995 7 лет назад

    Great in depth view of a very basic concept.
    You have talked about optimization and one thing that I really felt missed in this video was lazy evaluation.

  • @LifexLess
    @LifexLess 4 года назад

    You deserve so many more subscribers/views. Thank you for your videos.

  • @mbyb6817
    @mbyb6817 4 года назад +3

    Please make a video with examples of logic vs mathematical program flow.

  • @DTQC
    @DTQC 4 года назад +1

    wait, how can you can you pointer of char arrays? at 19:20? Wouldn't that just compare the address of the char arrays and only works by chance due to a lucky compiler optimization?

  • @foti4822
    @foti4822 2 года назад

    Love this series so far. I like how you show things like viewing the disassembly and debugging in visual studio. 👍

  • @sofianbenhamman2038
    @sofianbenhamman2038 3 года назад

    yes. we want the assembly video pls. You are the best at teaching!

  • @lokeshgubbala622
    @lokeshgubbala622 Год назад

    this integrated environment teaching helps us a lot!!!!! ✌️

  • @JFrameMan
    @JFrameMan 7 лет назад +1

    I wish I had learned programming from the beginning the way you're teaching this.

  • @praveshgaire3437
    @praveshgaire3437 6 лет назад

    Always learn new things from you (else if), never skip easy topics.

  • @nghiavutrung6419
    @nghiavutrung6419 5 лет назад

    The way that you teach is very easy to understand. I am learning assembly, could you make a series video for that?

  • @jiashuwang4446
    @jiashuwang4446 Год назад

    something interesting:
    if you define two integer variables: a and b
    and then initialize it with 0 and 1
    now here is a if:
    if(a&&b++){
    ;
    }
    and after the if, the b is still 1
    but if we change the condition:
    if(a||b++){
    ;
    }
    this time b == 2
    when I encountered this, I was amazed that the PC was not as stupid as I once had thought. It is clear about the condition structure. If there is a && structure, judge will end immediately after finding a false proposition(im a beginner, maybe there are some misunderstandings)

  • @motionsmoments6254
    @motionsmoments6254 3 года назад

    I liked the videos so much that at this point I click the like button before actually watching the videos... :)

  • @error303
    @error303 2 года назад

    When I was using unity and C#, I figured out the else if thing on my own.

  • @mat13channel
    @mat13channel 4 года назад +2

    You can replace logical programming by doing mathematical operations instead? Wow, I am really intrigued in what you meant by that... I hope there'll be such example in later lessons.

  • @wooolly1722
    @wooolly1722 4 года назад

    Please do any Assembly tutorial some day please!! I've wanted to understand Assembly more for the longest time.

  • @palmasalazar2113
    @palmasalazar2113 Год назад

    ¡Te amo cherno! Sigo esperando tu video acerca de ensamblador.

  • @rohitkumarshrivastava9693
    @rohitkumarshrivastava9693 2 года назад

    Please make a video on assembly language. There are other video available but you explain things really well.

  • @jimtc1000
    @jimtc1000 3 года назад +1

    Thanks gret video my lazy college professor had me watch this to learn about if statements . The college should give you his paycheck.

  • @goobhoney
    @goobhoney 9 месяцев назад

    you explain so well ❤❤❤

  • @kriszenn1125
    @kriszenn1125 3 года назад +1

    "branching makes your program slower"
    *glances at yandere dev*

  • @vidhishetty4130
    @vidhishetty4130 5 лет назад

    Thankyou so much for all your Cpp tutorials. I have learnt so much from you.

  • @rishi3
    @rishi3 5 лет назад +3

    yes , we want some assembly tutorials

  • @RomeWithTheHEMIs
    @RomeWithTheHEMIs 7 лет назад

    Much love, Yan! I really enjoy these vids, and appreciate the dedication you've shown.
    Asm tutorials would be amazing

  • @kasiviswanadhsripada
    @kasiviswanadhsripada 2 года назад

    Hi Cherno! thanks for the video series.

  • @Gundyr54
    @Gundyr54 Год назад

    yes please we want Assembly crash course

  • @chomiyeons
    @chomiyeons Год назад

    ive learned sm from this series!! u r truly a life saver as ive been trying to learn c++ for some time but never rlly got anywhere. with this series it rlly helped me understand c++ and how it works.

  • @kenedymatiassoportella808
    @kenedymatiassoportella808 2 года назад

    That is gold! Thank you.

  • @ShonePizza
    @ShonePizza 7 лет назад

    Thx, my native lang is russian, but it's so easy to understand your speech.

  • @gdkor
    @gdkor Год назад +1

    19:40 Can someone explain why did comparison ptr == "Hello" return true if as far as I remember it compares the address that ptr contains and the address of the temporary object and it must never be true

    • @Netpilation
      @Netpilation Год назад +1

      exactly i was thining the same

  • @raghavsrivastava2910
    @raghavsrivastava2910 3 года назад

    You are amazing. Please make a course on x86-64 and arm assembly. I really love efficiency.

  • @painfullyhuman
    @painfullyhuman Год назад

    it pisses me off that after reading a 1200-page book your videos are not only more succint but more helpful than anything in it

  • @MarcusTL12
    @MarcusTL12 7 лет назад +1

    YAAAY! Best time of the week :D

  • @davidcfrogley
    @davidcfrogley 6 месяцев назад

    Please note that the `ptr == "Hello"` works not because of the result of a string comparison but because the compiler reused the identical "Hello" c-strings (instead of creating two separate ones) and compared memory addresses (so clearly a c-string's memory address is equal to its own memory address, hence the comparison results in "true"). For string value comparison, use strcmp (for c-strings) or use C++ strings (std::string).

  • @hexlo514
    @hexlo514 6 лет назад

    If you could do a series on assembly(IA-32), that would be amazing! Started software engineering not too long ago and this series is of tremendous help. Keep it up :D

  • @AnirudhBalram-g1o
    @AnirudhBalram-g1o Год назад

    If else if is not a keyword, how are we able to place an else at the end of the control block? Was just curious. But this tutorial is by far the best I have seen so far

  • @judebubune6697
    @judebubune6697 4 месяца назад

    glad i found this page

  • @sairam332
    @sairam332 4 года назад

    I really like this channel. Thanks Bro.

  • @lreporte
    @lreporte 4 года назад

    this is a masterpiece

  • @jour785
    @jour785 Год назад

    The way that else if is really made blew my mind lmao

  • @mirzakadic9174
    @mirzakadic9174 Год назад +1

    Else If is not a keyword... Mind blown :D

  • @iluvpwny7565
    @iluvpwny7565 2 года назад

    20:04
    ENLIGHTENED!

  • @karmaindustrie
    @karmaindustrie 6 лет назад +2

    I want to know more about mathematical vs. logical programming!

    • @benw-l7k
      @benw-l7k 5 лет назад

      In computer science, logic is a subset of mathematics.

  • @whatsup7341
    @whatsup7341 4 года назад

    19:39 is really confusing without explanation, because one would not expect ptr and the string literal "Hello" to refer to the same memory, unless they happened to have heard this before.

  • @choosyguytest719
    @choosyguytest719 5 лет назад +1

    else if blew my mind :)

  • @tushar9396
    @tushar9396 3 года назад

    Me at 2:37, jumping with happiness!!
    thanx bruh!!

  • @Tom_Blue222
    @Tom_Blue222 4 года назад

    Assembly is a nightmare, but knowing assembly would be awesome

  • @vishnuks6252
    @vishnuks6252 4 года назад

    Excellent explanation..

  • @apophiz1861
    @apophiz1861 28 дней назад

    We are still waiting for those assembly videos you promised 🙂

  • @Plasticcaz
    @Plasticcaz 7 лет назад +1

    I've have a little knowledge about assembly and machine code, but it still seems quite foreign to me. I'd not be dissapointed to see one or more tutorials dedicated to assembly.

  • @booradley3333
    @booradley3333 4 года назад

    16:08 - If we write each and every part from if on a new line would the debugger move to every line and give us more details ?

  • @jag5260
    @jag5260 4 года назад

    The best video tutorials. c++ i ever watch very detailed and easy to understand . 👍👍 specially in game engine programming. Can you make a tutorial about UI ingame programming in c++ visualstudio and its function like skills and invetory system with xml and external UI Dds file, client to server. 😃😆

  • @Chrisymcmb
    @Chrisymcmb Год назад

    The Cherno is OP

  • @leixun
    @leixun 4 года назад +3

    *My takeaways:*
    If statement is slow 2:10, what can we do 21:30

  • @andreashadjigeorgiou1596
    @andreashadjigeorgiou1596 4 года назад

    I would definitely be interested in Assembly videos

  • @Bajaju
    @Bajaju 2 года назад

    So good even after 5 years

  • @resantic2256
    @resantic2256 7 лет назад +3

    So if I understand, if you can convert an if statement into a mathematical operation to make it faster you should do do? Won't the compiler in release mode with optimizations on do it for you?
    Because of the unintuitive way to write it it might be harder to understand when debugging or when looking at the code at some point later in time.
    Also, how long do you estimate it to be until you move on to actual programming of useful applications/games?

    • @mytech6779
      @mytech6779 7 лет назад

      Conditional branching in the logic is the issue, not that it is an if statement specifically. The cpu (a single core) can work on several parts of the code concurrently (it has separate sub-units for comparisons, adders, float multipliers, register moves, prefetching lines of memory or cache, etc) If there is a conditional branch it won't know which way it should work ahead.
      Very modern machines (that do not run on a battery) use branch predictors that will work ahead based on the odds of the conditional, this can speed up long running programs but on individual conditions if it predicts the wrong branch all the working ahead is useless. (and the extra unused processing is wasted electricity)