What's the difference between (size_t)-1 and ~0? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceWhat is the difference between -1 and ~0What is the difference between #include <filename> and #include “filename”?Signed versus Unsigned IntegersWhy doesn't C have unsigned floats?What is the difference between const int*, const int * const, and int const *?size_t vs. uintptr_tDifference between malloc and calloc?Improve INSERT-per-second performance of SQLite?Difference between signed / unsigned charshould use size_t or ssize_tWhy is unsigned integer overflow defined behavior but signed integer overflow isn't?

How to add zeros to reach same number of decimal places in tables?

How are presidential pardons supposed to be used?

Stop battery usage [Ubuntu 18]

If A makes B more likely then B makes A more likely"

Make it rain characters

Why don't the Weasley twins use magic outside of school if the Trace can only find the location of spells cast?

Using "nakedly" instead of "with nothing on"

How do I automatically answer y in bash script?

Limit for e and 1/e

Single author papers against my advisor's will?

does high air pressure throw off wheel balance?

I'm thinking of a number

Writing Thesis: Copying from published papers

Would an alien lifeform be able to achieve space travel if lacking in vision?

How does modal jazz use chord progressions?

A constraint that implies convexity

How can I protect witches in combat who wear limited clothing?

I'm having difficulty getting my players to do stuff in a sandbox campaign

How did the aliens keep their waters separated?

Was credit for the black hole image misattributed?

Autumning in love

How is simplicity better than precision and clarity in prose?

How to dynamically generate the hash value of a file while it gets downloaded from any website?

What does the torsion-free condition for a connection mean in terms of its horizontal bundle?



What's the difference between (size_t)-1 and ~0?



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
The Ask Question Wizard is Live!
Data science time! April 2019 and salary with experienceWhat is the difference between -1 and ~0What is the difference between #include <filename> and #include “filename”?Signed versus Unsigned IntegersWhy doesn't C have unsigned floats?What is the difference between const int*, const int * const, and int const *?size_t vs. uintptr_tDifference between malloc and calloc?Improve INSERT-per-second performance of SQLite?Difference between signed / unsigned charshould use size_t or ssize_tWhy is unsigned integer overflow defined behavior but signed integer overflow isn't?



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








6















I've seen both (size_t)-1 and ~0 used to represent large numbers, or numbers with all their bits flipped.



Is there any difference between the two? If so, what is it?



I found this question: What is the difference between -1 and ~0, however it did not answer my question because I'm dealing with unsigned integers (such as size_t), as opposed to signed integers (such as int).










share|improve this question






















  • Note that ~0 is a signed quantity — you'd need ~0U to make it unsigned.

    – Jonathan Leffler
    1 hour ago











  • Should I edit that?

    – JL2210
    1 hour ago






  • 3





    Since you've got some answers which addresses ~0 rather than ~0U, best to leave it unchanged, I think, but note for the future that it is a good idea to be careful. You can change a question up until making the change would invalidate answers.

    – Jonathan Leffler
    1 hour ago


















6















I've seen both (size_t)-1 and ~0 used to represent large numbers, or numbers with all their bits flipped.



Is there any difference between the two? If so, what is it?



I found this question: What is the difference between -1 and ~0, however it did not answer my question because I'm dealing with unsigned integers (such as size_t), as opposed to signed integers (such as int).










share|improve this question






















  • Note that ~0 is a signed quantity — you'd need ~0U to make it unsigned.

    – Jonathan Leffler
    1 hour ago











  • Should I edit that?

    – JL2210
    1 hour ago






  • 3





    Since you've got some answers which addresses ~0 rather than ~0U, best to leave it unchanged, I think, but note for the future that it is a good idea to be careful. You can change a question up until making the change would invalidate answers.

    – Jonathan Leffler
    1 hour ago














6












6








6








I've seen both (size_t)-1 and ~0 used to represent large numbers, or numbers with all their bits flipped.



Is there any difference between the two? If so, what is it?



I found this question: What is the difference between -1 and ~0, however it did not answer my question because I'm dealing with unsigned integers (such as size_t), as opposed to signed integers (such as int).










share|improve this question














I've seen both (size_t)-1 and ~0 used to represent large numbers, or numbers with all their bits flipped.



Is there any difference between the two? If so, what is it?



I found this question: What is the difference between -1 and ~0, however it did not answer my question because I'm dealing with unsigned integers (such as size_t), as opposed to signed integers (such as int).







c unsigned ones-complement






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 2 hours ago









JL2210JL2210

623121




623121












  • Note that ~0 is a signed quantity — you'd need ~0U to make it unsigned.

    – Jonathan Leffler
    1 hour ago











  • Should I edit that?

    – JL2210
    1 hour ago






  • 3





    Since you've got some answers which addresses ~0 rather than ~0U, best to leave it unchanged, I think, but note for the future that it is a good idea to be careful. You can change a question up until making the change would invalidate answers.

    – Jonathan Leffler
    1 hour ago


















  • Note that ~0 is a signed quantity — you'd need ~0U to make it unsigned.

    – Jonathan Leffler
    1 hour ago











  • Should I edit that?

    – JL2210
    1 hour ago






  • 3





    Since you've got some answers which addresses ~0 rather than ~0U, best to leave it unchanged, I think, but note for the future that it is a good idea to be careful. You can change a question up until making the change would invalidate answers.

    – Jonathan Leffler
    1 hour ago

















Note that ~0 is a signed quantity — you'd need ~0U to make it unsigned.

– Jonathan Leffler
1 hour ago





Note that ~0 is a signed quantity — you'd need ~0U to make it unsigned.

– Jonathan Leffler
1 hour ago













Should I edit that?

– JL2210
1 hour ago





Should I edit that?

– JL2210
1 hour ago




3




3





Since you've got some answers which addresses ~0 rather than ~0U, best to leave it unchanged, I think, but note for the future that it is a good idea to be careful. You can change a question up until making the change would invalidate answers.

– Jonathan Leffler
1 hour ago






Since you've got some answers which addresses ~0 rather than ~0U, best to leave it unchanged, I think, but note for the future that it is a good idea to be careful. You can change a question up until making the change would invalidate answers.

– Jonathan Leffler
1 hour ago













3 Answers
3






active

oldest

votes


















5















What's the difference between (size_t)-1 and ~0?




Type and value differ.



(size_t)-1 is the same value as SIZE_MAX and has a type of size_t.



~0 is often -1 and has the type of int.




Assigning both of those to a size_t will result in SIZE_MAX.



size_t a = (size_t)-1; 
size_t b = ~0;


In the 2nd case, -1 is assigned to a b and undergoes a conversion first, wrapping around the -1 to the maximum size_t value.






share|improve this answer

























  • Comments are not for extended discussion; this conversation has been moved to chat.

    – Bhargav Rao
    1 hour ago


















4














(size_t)-1 is of type size_t. It typically has a value of 232-1 or 264-1 (4294967295 or 18446744073709551615).



~0 is of type int, and has the value -1 on a 2's-complement system (i.e., just about everywhere).



Both are likely to have the same bit pattern -- if int and size_t are the same size, which they very commonly are not.



If you want the maximum value of type size_t, you can use the SIZE_MAX macro, defined in <stdint.h>. If you're using an older implementation (pre-C99) that doesn't provide SIZE_MAX, (size_t)-1 will work. I'm not sure why you'd want to write ~0 rather than -1 -- unless perhaps you're considering non-two's-complement systems.






share|improve this answer

























  • Thanks for letting me know. I'll remember to define SIZE_MAX in my stdint.h implementation.

    – JL2210
    1 hour ago


















0














Note that the previous answers assume a 2s complement machine (very likely to be the case these days, but not guaranteed).



If you had a sign-magnitude machine then -1 would have a sign bit and least significant bit set with all others clear, if you had a 1s complement machine then -1 would have all bits but the LSB set.



In all of these cases (including the common 2s complement machine) ~0 has all bits set.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55678835%2fwhats-the-difference-between-size-t-1-and-0%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    3 Answers
    3






    active

    oldest

    votes








    3 Answers
    3






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    5















    What's the difference between (size_t)-1 and ~0?




    Type and value differ.



    (size_t)-1 is the same value as SIZE_MAX and has a type of size_t.



    ~0 is often -1 and has the type of int.




    Assigning both of those to a size_t will result in SIZE_MAX.



    size_t a = (size_t)-1; 
    size_t b = ~0;


    In the 2nd case, -1 is assigned to a b and undergoes a conversion first, wrapping around the -1 to the maximum size_t value.






    share|improve this answer

























    • Comments are not for extended discussion; this conversation has been moved to chat.

      – Bhargav Rao
      1 hour ago















    5















    What's the difference between (size_t)-1 and ~0?




    Type and value differ.



    (size_t)-1 is the same value as SIZE_MAX and has a type of size_t.



    ~0 is often -1 and has the type of int.




    Assigning both of those to a size_t will result in SIZE_MAX.



    size_t a = (size_t)-1; 
    size_t b = ~0;


    In the 2nd case, -1 is assigned to a b and undergoes a conversion first, wrapping around the -1 to the maximum size_t value.






    share|improve this answer

























    • Comments are not for extended discussion; this conversation has been moved to chat.

      – Bhargav Rao
      1 hour ago













    5












    5








    5








    What's the difference between (size_t)-1 and ~0?




    Type and value differ.



    (size_t)-1 is the same value as SIZE_MAX and has a type of size_t.



    ~0 is often -1 and has the type of int.




    Assigning both of those to a size_t will result in SIZE_MAX.



    size_t a = (size_t)-1; 
    size_t b = ~0;


    In the 2nd case, -1 is assigned to a b and undergoes a conversion first, wrapping around the -1 to the maximum size_t value.






    share|improve this answer
















    What's the difference between (size_t)-1 and ~0?




    Type and value differ.



    (size_t)-1 is the same value as SIZE_MAX and has a type of size_t.



    ~0 is often -1 and has the type of int.




    Assigning both of those to a size_t will result in SIZE_MAX.



    size_t a = (size_t)-1; 
    size_t b = ~0;


    In the 2nd case, -1 is assigned to a b and undergoes a conversion first, wrapping around the -1 to the maximum size_t value.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 1 hour ago

























    answered 1 hour ago









    chuxchux

    85.3k874157




    85.3k874157












    • Comments are not for extended discussion; this conversation has been moved to chat.

      – Bhargav Rao
      1 hour ago

















    • Comments are not for extended discussion; this conversation has been moved to chat.

      – Bhargav Rao
      1 hour ago
















    Comments are not for extended discussion; this conversation has been moved to chat.

    – Bhargav Rao
    1 hour ago





    Comments are not for extended discussion; this conversation has been moved to chat.

    – Bhargav Rao
    1 hour ago













    4














    (size_t)-1 is of type size_t. It typically has a value of 232-1 or 264-1 (4294967295 or 18446744073709551615).



    ~0 is of type int, and has the value -1 on a 2's-complement system (i.e., just about everywhere).



    Both are likely to have the same bit pattern -- if int and size_t are the same size, which they very commonly are not.



    If you want the maximum value of type size_t, you can use the SIZE_MAX macro, defined in <stdint.h>. If you're using an older implementation (pre-C99) that doesn't provide SIZE_MAX, (size_t)-1 will work. I'm not sure why you'd want to write ~0 rather than -1 -- unless perhaps you're considering non-two's-complement systems.






    share|improve this answer

























    • Thanks for letting me know. I'll remember to define SIZE_MAX in my stdint.h implementation.

      – JL2210
      1 hour ago















    4














    (size_t)-1 is of type size_t. It typically has a value of 232-1 or 264-1 (4294967295 or 18446744073709551615).



    ~0 is of type int, and has the value -1 on a 2's-complement system (i.e., just about everywhere).



    Both are likely to have the same bit pattern -- if int and size_t are the same size, which they very commonly are not.



    If you want the maximum value of type size_t, you can use the SIZE_MAX macro, defined in <stdint.h>. If you're using an older implementation (pre-C99) that doesn't provide SIZE_MAX, (size_t)-1 will work. I'm not sure why you'd want to write ~0 rather than -1 -- unless perhaps you're considering non-two's-complement systems.






    share|improve this answer

























    • Thanks for letting me know. I'll remember to define SIZE_MAX in my stdint.h implementation.

      – JL2210
      1 hour ago













    4












    4








    4







    (size_t)-1 is of type size_t. It typically has a value of 232-1 or 264-1 (4294967295 or 18446744073709551615).



    ~0 is of type int, and has the value -1 on a 2's-complement system (i.e., just about everywhere).



    Both are likely to have the same bit pattern -- if int and size_t are the same size, which they very commonly are not.



    If you want the maximum value of type size_t, you can use the SIZE_MAX macro, defined in <stdint.h>. If you're using an older implementation (pre-C99) that doesn't provide SIZE_MAX, (size_t)-1 will work. I'm not sure why you'd want to write ~0 rather than -1 -- unless perhaps you're considering non-two's-complement systems.






    share|improve this answer















    (size_t)-1 is of type size_t. It typically has a value of 232-1 or 264-1 (4294967295 or 18446744073709551615).



    ~0 is of type int, and has the value -1 on a 2's-complement system (i.e., just about everywhere).



    Both are likely to have the same bit pattern -- if int and size_t are the same size, which they very commonly are not.



    If you want the maximum value of type size_t, you can use the SIZE_MAX macro, defined in <stdint.h>. If you're using an older implementation (pre-C99) that doesn't provide SIZE_MAX, (size_t)-1 will work. I'm not sure why you'd want to write ~0 rather than -1 -- unless perhaps you're considering non-two's-complement systems.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 1 hour ago









    Jonathan Leffler

    575k956881041




    575k956881041










    answered 1 hour ago









    Keith ThompsonKeith Thompson

    195k26290484




    195k26290484












    • Thanks for letting me know. I'll remember to define SIZE_MAX in my stdint.h implementation.

      – JL2210
      1 hour ago

















    • Thanks for letting me know. I'll remember to define SIZE_MAX in my stdint.h implementation.

      – JL2210
      1 hour ago
















    Thanks for letting me know. I'll remember to define SIZE_MAX in my stdint.h implementation.

    – JL2210
    1 hour ago





    Thanks for letting me know. I'll remember to define SIZE_MAX in my stdint.h implementation.

    – JL2210
    1 hour ago











    0














    Note that the previous answers assume a 2s complement machine (very likely to be the case these days, but not guaranteed).



    If you had a sign-magnitude machine then -1 would have a sign bit and least significant bit set with all others clear, if you had a 1s complement machine then -1 would have all bits but the LSB set.



    In all of these cases (including the common 2s complement machine) ~0 has all bits set.






    share|improve this answer



























      0














      Note that the previous answers assume a 2s complement machine (very likely to be the case these days, but not guaranteed).



      If you had a sign-magnitude machine then -1 would have a sign bit and least significant bit set with all others clear, if you had a 1s complement machine then -1 would have all bits but the LSB set.



      In all of these cases (including the common 2s complement machine) ~0 has all bits set.






      share|improve this answer

























        0












        0








        0







        Note that the previous answers assume a 2s complement machine (very likely to be the case these days, but not guaranteed).



        If you had a sign-magnitude machine then -1 would have a sign bit and least significant bit set with all others clear, if you had a 1s complement machine then -1 would have all bits but the LSB set.



        In all of these cases (including the common 2s complement machine) ~0 has all bits set.






        share|improve this answer













        Note that the previous answers assume a 2s complement machine (very likely to be the case these days, but not guaranteed).



        If you had a sign-magnitude machine then -1 would have a sign bit and least significant bit set with all others clear, if you had a 1s complement machine then -1 would have all bits but the LSB set.



        In all of these cases (including the common 2s complement machine) ~0 has all bits set.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 16 mins ago









        SoronelHaetirSoronelHaetir

        7,1631514




        7,1631514



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55678835%2fwhats-the-difference-between-size-t-1-and-0%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Bett Inhaltsverzeichnis Geschichte | Bettformen | Bettgrößen | Andere Bezeichnungen | Bettenmangel | Betten in der bildenden Kunst | Schlafmedizinische Gesichtspunkte | Siehe auch | Literatur | Weblinks | Einzelnachweise | NavigationsmenüBett, Bettstatt, BettstelleCommons: BettBabybetten: Anwendung, Ausstattungsmerkmale und VergleichskriterienWasserbetten. Vorurteile im TestHapfnNursch10.1007/s11818-012-0584-74006250-8AKS4329276-8

            Luksemburg Sisukord Nimi | Asend | Loodus | Riigikord | Haldusjaotus | Rahvastik | Riigikaitse | Majandus | Taristu | Ajalugu | Eesti ja Luksemburgi suhted | Haridus | Kultuur | Vaata ka | Viited | Välislingid | Navigeerimismenüü50° N, 6° EÜlevaade Luksemburgi kaitsealadest.Luksemburgi rahvaarv. Statistikaamet.World Bank'i andmebaasÜlevaade Luksemburgi loodusest.Ülevaade Luksemburgi metsadest.Guy Colling. "Red List of the Vascular Plants of Luxembourg." Travaux scientifiques du Musée national d’histoire naturelle Luxembourg. 2005.Luxembourg’s biodiversity at risk.Maailma kahepaiksete andmebaas.Denis Lepage. "Luxembourg." Avibase.Ülevaade temperatuuridest. Luksemburgi meteoroloogiateenistus.Ülevaade Luksemburgist. Euroopa Liidu esinduse koduleht.Système politique. TerritoireÜlevaade Luksemburgi rahvastikust. Luksemburgi statistikaamet.Luksemburgi rahvastik. Luksemburgi statistikaamet.The World FactbookMonique Borsenberger, Paul Dickes. "Religions au Luxembourg. Quelle évolution entre 1999-2008". Luksemburgi statistikaamet. 2011.Luksemburgi peapiiskopkond. Catholic-Hierarchy.Luksemburgi armee koduleht.Luksemburgi armee relvastus.Eesti Välisministeerium.Luksemburgi rahvastik. Luksemburgi statistikaamet.Luksemburgi Eesti Seltsi koduleht.Helen Eelrand. "Raadio, mis muutis maailma." Eesti Päevaleht. 13. märts 2004.Ülevaade Luksemburgi haridussüsteemist.Ülevaade Luksemburgi keskkoolidest.Luksemburgr

            Valle di Casies Indice Geografia fisica | Origini del nome | Storia | Società | Amministrazione | Sport | Note | Bibliografia | Voci correlate | Altri progetti | Collegamenti esterni | Menu di navigazione46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)Sito istituzionaleAstat Censimento della popolazione 2011 - Determinazione della consistenza dei tre gruppi linguistici della Provincia Autonoma di Bolzano-Alto Adige - giugno 2012Numeri e fattiValle di CasiesDato IstatTabella dei gradi/giorno dei Comuni italiani raggruppati per Regione e Provincia26 agosto 1993, n. 412Heraldry of the World: GsiesStatistiche I.StatValCasies.comWikimedia CommonsWikimedia CommonsValle di CasiesSito ufficialeValle di CasiesMM14870458910042978-6